Avatar billede prhan Juniormester
31. januar 2014 - 10:15 Der er 9 kommentarer og
1 løsning

Forenkling af syntaks

Er der nogen der har overblik og skud til at se på om denne syntaks kan forenkles?

SELECT    *

FROM    SITE JOIN SITE_EVENTS AS site_events_a
            ON SITE.SITE_SEQ_NO = site_events_a.SITE_SEQ_NO
        JOIN EVENT_TYPES AS event_types_a
            ON site_events_a.EVENT_TYPE_ID = event_types_a.EVENT_TYPE_ID
        JOIN SITE_EVENTS AS site_events_b
            ON SITE.SITE_SEQ_NO = site_events_b.SITE_SEQ_NO
        JOIN EVENT_TYPES AS event_types_b
            ON site_events_b.EVENT_TYPE_ID = event_types_b.EVENT_TYPE_ID
        JOIN SITE_EVENTS AS site_events_c
            ON SITE.SITE_SEQ_NO = site_events_c.SITE_SEQ_NO
        JOIN EVENT_TYPES AS event_types_c
            ON site_events_c.EVENT_TYPE_ID = event_types_c.EVENT_TYPE_ID
        JOIN SITE_EVENTS AS site_events_d
            ON SITE.SITE_SEQ_NO = site_events_d.SITE_SEQ_NO
        JOIN EVENT_TYPES AS event_types_d
            ON site_events_d.EVENT_TYPE_ID = event_types_d.EVENT_TYPE_ID

WHERE    site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID = '21.210'
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_END_PERIOD = site_events_c.EVENT_END_PERIOD
        AND site_events_c.EVENT_END_PERIOD = site_events_d.EVENT_END_PERIOD
        OR
        site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID = '21.210'
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_END_PERIOD = site_events_c.EVENT_END_PERIOD
        AND (NOT EXISTS
                (SELECT    *
                FROM    SITE_EVENTS
                WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                        AND EVENT_TYPE_ID = '21.005'
                        AND EVENT_END_PERIOD LIKE '%pulje%')
                )
        AND site_events_b.EVENT_ORDERED_BY LIKE '%Region%'
        AND site_events_d.EVENT_ORDERED_BY LIKE '%Region%'
        OR
        site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_END_PERIOD = site_events_d.EVENT_END_PERIOD
        AND site_events_b.EVENT_ORDERED_BY LIKE '%Region%'
        AND (NOT EXISTS
            (SELECT    *
            FROM    SITE_EVENTS
            WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                    AND EVENT_TYPE_ID = '21.210'
                    AND EVENT_END_PERIOD LIKE '%pulje%')
            )
        AND site_events_c.EVENT_ORDERED_BY LIKE '%Region%'
        OR
        site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_ORDERED_BY LIKE '%Region%'
        AND site_events_d.EVENT_ORDERED_BY LIKE '%Region%'
        AND site_events_c.EVENT_ORDERED_BY LIKE '%Region%'
        AND (NOT EXISTS
            (SELECT    *
            FROM    SITE_EVENTS
            WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                    AND EVENT_TYPE_ID IN ('21.210','21.005')
                    AND EVENT_END_PERIOD LIKE '%pulje%')
            )
        OR
        site_events_a.EVENT_TYPE_ID = site_events_b.EVENT_TYPE_ID
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID = '21.210'
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_END_PERIOD LIKE '%light%'
        AND site_events_c.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_d.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND (NOT EXISTS
            (SELECT    *
            FROM    SITE_EVENTS
            WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                    AND EVENT_TYPE_ID = '50.021')
            )
        OR
        site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID = '21.210'
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_b.EVENT_EXECUTED_BY LIKE '%Region%'
        AND site_events_c.EVENT_EXECUTED_BY = site_events_b.EVENT_EXECUTED_BY
        AND site_events_d.EVENT_EXECUTED_BY = site_events_b.EVENT_EXECUTED_BY
        OR
        site_events_a.EVENT_TYPE_ID = site_events_b.EVENT_TYPE_ID
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID = '21.210'
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_b.EVENT_EXECUTED_BY = '%Region%'
        AND site_events_c.EVENT_EXECUTED_BY = site_events_b.EVENT_EXECUTED_BY
        AND site_events_d.EVENT_EXECUTED_BY = site_events_b.EVENT_EXECUTED_BY
        AND (NOT EXISTS
            (SELECT    *
            FROM    SITE_EVENTS
            WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                    AND EVENT_TYPE_ID = '50.021')
            )
        OR
        site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID = '21.208'
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_END_PERIOD = site_events_c.EVENT_END_PERIOD
        AND site_events_c.EVENT_END_PERIOD = site_events_d.EVENT_END_PERIOD
        OR
        site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID = '21.208'
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_END_PERIOD = site_events_c.EVENT_END_PERIOD
        AND site_events_b.EVENT_ORDERED_BY LIKE '%Region%'
        AND site_events_d.EVENT_ORDERED_BY LIKE '%Region%'
        AND (NOT EXISTS
            (SELECT    *
            FROM    SITE_EVENTS
            WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                    AND EVENT_TYPE_ID = '21.005'
                    AND EVENT_END_PERIOD LIKE '%pulje%')
            )
        OR
        site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_END_PERIOD = site_events_d.EVENT_END_PERIOD
        AND site_events_b.EVENT_ORDERED_BY LIKE '%Region%'
        AND site_events_c.EVENT_ORDERED_BY LIKE '%Region%'
        AND (NOT EXISTS
            (SELECT    *
            FROM    SITE_EVENTS
            WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                    AND EVENT_TYPE_ID = '21.208'
                    AND EVENT_END_PERIOD LIKE '%pulje%')
            )
        OR
        site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_ORDERED_BY LIKE '%Region%'
        AND site_events_d.EVENT_ORDERED_BY LIKE '%Region%'
        AND site_events_c.EVENT_ORDERED_BY LIKE '%Region%'
        AND (NOT EXISTS
            (SELECT    *
            FROM    SITE_EVENTS
            WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                    AND EVENT_TYPE_ID IN ('21.208','21.005')
                    AND EVENT_END_PERIOD LIKE '%pulje%')
            )
        OR
        site_events_a.EVENT_TYPE_ID = site_events_b.EVENT_TYPE_ID
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID = '21.208'
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_END_PERIOD LIKE '%light%'
        AND site_events_c.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_d.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND (NOT EXISTS
            (SELECT    *
            FROM    SITE_EVENTS
            WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                    AND EVENT_TYPE_ID = '50.021')
            )
        OR
        site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID = '21.208'
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_b.EVENT_EXECUTED_BY LIKE '%Region%'
        AND site_events_c.EVENT_EXECUTED_BY = site_events_b.EVENT_EXECUTED_BY
        AND site_events_d.EVENT_EXECUTED_BY = site_events_b.EVENT_EXECUTED_BY
        OR
        site_events_a.EVENT_TYPE_ID = site_events_b.EVENT_TYPE_ID
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID = '21.208'
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_b.EVENT_EXECUTED_BY = '%Region%'
        AND site_events_c.EVENT_EXECUTED_BY = site_events_b.EVENT_EXECUTED_BY
        AND site_events_d.EVENT_EXECUTED_BY = site_events_b.EVENT_EXECUTED_BY
        AND (NOT EXISTS
            (SELECT    *
            FROM    SITE_EVENTS
            WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                    AND EVENT_TYPE_ID = '50.021')
            )
Avatar billede runesoft Nybegynder
31. januar 2014 - 17:24 #1
Hvis jeg var dig ville jeg istedet forklare hvad det er du prøver at gøre, og høre hvordan man løser det optimalt.  For det første er det ret meget SQL at læse, og for det andet kan det være du har grebet det forkert an til at starte med
31. januar 2014 - 20:15 #2
Ja, jeg ville netop efterlyse en verbal forklaring.  Jeg kan se du har sites og du har event typer.  Hver site har et unikt site_seq_no og hver event type har et unikt event_type_id.

Så kan der, åbenbart, i tidens løb på en site foregå mange forskellige event typer, og hver event type kan foregå på mange sites.  Du holder i tabellen site_events rede på hvilke event typer har foregået på hvilke sites.  I hvert sådan tilfælde gemmer tre karakteristikker, event_end_period, event_ordered_by, og event_executed_by.

Så har du fire event typer der bliver ved med at gå igen,
'50.021', '21.001', '21.210', og '21.005'.  Jeg foreslår her at kalde dem event type 1, 2, 3, og 4.

Så vil du finde alle tilfælde hvor ENTEN alle fire event typer har haft samme event_end_period, ELLER hvor event 1, 2, og 3 har samme event_end_period og event type 4 ikke har en event_end_period der hedder noget med pulje ELLER hvor event 1, 2, og 4 har samme event_end_period og event type 3 ikke har en event_end_periode der hedder noget med pulje, ELLER ......

Prøv at beskrive i ord hvad du har med at gøre, hvad en event_end_periode er for noget, o.s.v., og hvad det så er du gerne vil have trukket ud.
Avatar billede prhan Juniormester
04. februar 2014 - 07:26 #3
Jeg beklager meget, at jeg ikke hurtigt har fulgt op på dette issue.

Baggrunden er, at jeg har "overtaget" forespørgslen fra en kollega og afventer svar på hvad der skal trækkes ud og hvorfor forespørgslen er opbygget som den er.

Jeg vender tilbage hurtigst muligt og tak for den tid I har taget jer til at se på issuet.
Avatar billede prhan Juniormester
06. februar 2014 - 08:18 #4
Der er reelt kun 2 tabeller der er relevante SITE og SITE_EVENTS. Tabellen EVENT_TYPES oversætter bare nogle af de koder der er i SITE_EVENTS.

Jeg ønsker så et samlede udtræk hvor der for hvert SITE gentages SITE_EVENTS 3 gange, så udtrækket giver mig information fra Site og 3 forskellige typer site.

Mit store problem der er selve kriteriedelen. Her er der taget udgangspunkt i, at der er fire EVENT_TYPE_ID ('50.021', '21.001', '21.210', og '21.005'), der gør sig gældende, men at der kan være situationer, hvor de af en eller anden grund ikke eksisterer - enten slettet eller ikke oprettet. der skal tages forbehold for at alle 4 site_events.EVENT_TYPE_ID ikke nødvendigvis findes for hvert site.site_seq_no. Derfor er tanken at forespørgslen skal tages hensyn til alle de kombinationsmuligheder der kan være af site_events.EVENT_TYPE_ID for hvert site.site_seq_no.

Jeg håber, at det giver mening. Det er også muligt at forespørgslen ikke kan sættes anderledes sammen, men den er ikke så nem at skabe et overblik over.
06. februar 2014 - 08:36 #5
Jeg står og skal afsted, sandynligvis for resten af dagen, men jeg skal kikke i morgen.  Hvad du fortæller giver lidt mere baggrund for at kunne tilnærme sig en løsning.
Avatar billede prhan Juniormester
06. februar 2014 - 08:43 #6
Super, tak.
Jeg er på ferie i næste uge, så bare giv dig god tid.
06. februar 2014 - 20:45 #7
Jeg er stadig ikke sikker på at jeg forstår problemstillingen.  Først et spørgsmål: virker database forespørgslen med den syntaks du viser?  Giver den det tilsigtede resultat?

I så fald, hvad sker der, hvis du i stedet bruger den følgende forenklede syntaks?  Får du så de samme data udskrevet som med den lange syntaks, muligvis i en anden rækkefølge?  Eller får du andre data udskrevet? I så fald hvad er forskellene?  (Hvis den forenklede syntaks giver de rigtige data udskrevet men i en forkert rækkefølge kan det måske rettes ved at tilføje nogle ORDER BY criteria.)

Her er den forenklede syntaks:

SELECT * FROM SITE
JOIN SITE_EVENTS ON SITE.SITE_SEQ_NO =SITE_EVENTS.SITE_SEQ_NO
JOIN EVENT_TYPES ON SITE_EVENTS.EVENT_TYPE_ID = EVENT_TYPES.EVENT_TYPE_ID

MEN er det nu således, at du selv kan svare på dette?  Eller er du blot talerør for en anden?  I så fald foreslår jeg, at du får denne anden til selv at oprette et spørgsmål, og jeg vil slutte her.  Ligeledes, jeg er ikke interesseret i at trække det ud til efter din ferie.  Lad os effektivt gøre det færdigt nu eller også glemme det.
17. februar 2014 - 15:31 #8
Du fik ikke flere indlæg, og jeg er ikke sikker på, at vi kommer længere.  Kan jeg bede dig lukke spørgsmålet igen (eller komme ind og fortælle din videre hensigt.)
Avatar billede prhan Juniormester
18. februar 2014 - 10:44 #9
Jeg beklager meget hvis jeg har været til ulejlighed. Nedenstående forespørgsel virker fint og jeg sidder selv og retter til.
Jeg joiner site med site_events fire gange for at få et samlet udtræk med forskellige informationer fra hver site_events_a/b/c/d.
Derfor kan jeg ikke bruge ovenstående forenklede syntaks.
Forespørgslen er blevet meget lang, da jeg ønsker en masse forskellige kombinationsmuligheder. Dette tænkte jeg kunne gøres smartere. Men jeg (og andre i min afdeling) har svært ved at forklare dette for personer der ikke kender vores data og måde at arbejde på.

#Christian_Belgien giv et svar og så får du point for dit meget taknemlige forsøg på at hjælpe.

SELECT    SITE.SITE_ID AS Lokalitetsnr,
        SITE.SITE_ADDRESS AS Adresse,
        SITE.init AS Sagsbehandler,
        SITE.COMMENTS AS Journalnr,                                                        --Overblik fra Site
            event_types_a.EVENT_TYPE_NAME AS Sagsforløb_anmodning,    --svarende til kode 50.021
            site_events_a.EVENT_END_PERIOD AS Pulje_anmodning,--svarer "Slut, ca" under kode 50.021- her er angivet et puljenummer, som skal være det samme på de efterfølgende sagsforløb
            site_events_a.EVENT_START_PERIOD AS Modtaget_anmodning,
            CONVERT(VARCHAR(10),site_events_a.START_DATE, 105) AS Startdato_anmodning,--bruges muligvis ikke
            CONVERT(VARCHAR(10),site_events_a.END_DATE, 105) AS Slutdato_anmodning,--bruges muligvis ikke
            site_events_a.DESCRIPTION AS Beskrivelse_anmodning,--bruges muligvis ikke    --1-års undersøgelse, anmodning a)
                event_types_b.EVENT_TYPE_NAME AS Sagsforløb_und,--svarende til kode 21.001
                site_events_b.EVENT_END_PERIOD AS Pulje_und,
                site_events_b.EVENT_START_PERIOD AS Modtaget_und,--bruges muligvis ikke
                CONVERT(VARCHAR(10),site_events_b.START_DATE, 105) AS Startdato_und,
                CONVERT(VARCHAR(10),site_events_b.END_DATE, 105) AS Slutdato_und,
                site_events_b.DESCRIPTION AS Beskrivelse_und,--bruges muligvis ikke        --Undersagsforløb for pulje, egne undersøgelser... b)
                    event_types_c.EVENT_TYPE_NAME AS Sagsforløb_oplaeg,--svarende til kode 21.210
                    site_events_c.EVENT_END_PERIOD AS Pulje_oplaeg,
                    site_events_c.EVENT_START_PERIOD AS Modtaget_oplaeg,
                    CONVERT(VARCHAR(10),site_events_c.START_DATE, 105) AS Startdato_oplaeg,
                    CONVERT(VARCHAR(10),site_events_c.END_DATE, 105) AS Slutdato_oplaeg,
                    site_events_c.DESCRIPTION AS Beskrivelse_oplaeg,                    --Sagsforløb for Oplæg til undersøgelse c)
                        event_types_d.EVENT_TYPE_NAME AS Sagsforløb_vur,
                        site_events_d.EVENT_END_PERIOD AS Pulje_vur,
                        site_events_d.EVENT_START_PERIOD AS Modtaget_vur,
                        CONVERT(VARCHAR(10),site_events_d.START_DATE, 105) AS Startdato_vur,
                        CONVERT(VARCHAR(10),site_events_d.END_DATE, 105) AS Slutdato_vur,
                        site_events_d.DESCRIPTION AS Beskrivelse_vur                    --Sagsforløb for Udarbejdelse af afgørelse d)

FROM    SITE JOIN SITE_EVENTS AS site_events_a
            ON SITE.SITE_SEQ_NO = site_events_a.SITE_SEQ_NO
        JOIN EVENT_TYPES AS event_types_a
            ON site_events_a.EVENT_TYPE_ID = event_types_a.EVENT_TYPE_ID
        JOIN SITE_EVENTS AS site_events_b
            ON SITE.SITE_SEQ_NO = site_events_b.SITE_SEQ_NO
        JOIN EVENT_TYPES AS event_types_b
            ON site_events_b.EVENT_TYPE_ID = event_types_b.EVENT_TYPE_ID
        JOIN SITE_EVENTS AS site_events_c
            ON SITE.SITE_SEQ_NO = site_events_c.SITE_SEQ_NO
        JOIN EVENT_TYPES AS event_types_c
            ON site_events_c.EVENT_TYPE_ID = event_types_c.EVENT_TYPE_ID
        JOIN SITE_EVENTS AS site_events_d
            ON SITE.SITE_SEQ_NO = site_events_d.SITE_SEQ_NO
        JOIN EVENT_TYPES AS event_types_d
            ON site_events_d.EVENT_TYPE_ID = event_types_d.EVENT_TYPE_ID

WHERE    site_events_a.EVENT_TYPE_ID = '50.021'        --1-års undersøgelse, anmodning
        AND site_events_b.EVENT_TYPE_ID = '21.001'    --Oplæg til undersøgelse
        AND site_events_c.EVENT_TYPE_ID IN ('21.210','21.208')    --Projektfase indledende undersøgelser, Projektfase, 1-års undersøgelse
        AND site_events_d.EVENT_TYPE_ID = '21.005'    --Udarbejdelse af afgørelse
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_END_PERIOD = site_events_c.EVENT_END_PERIOD
        AND site_events_c.EVENT_END_PERIOD = site_events_d.EVENT_END_PERIOD
        --Denne del søger lokaliteter, som har alle fire sagsforløb oprettet. Det er en forudsætning, at der er angivet samme puljenummer. Dette er for at forhindre, at der kan være andre sagsforløb med samme kode (f.eks. tidligere regionspuljer - kan være undersøgt af flere omgange, hvis der er flere matrikler/ejendomme på én lokalitet)
        OR
        site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID IN ('21.210','21.208')
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_END_PERIOD = site_events_c.EVENT_END_PERIOD
        AND site_events_b.EVENT_ORDERED_BY LIKE '%Region%'
        AND site_events_d.EVENT_ORDERED_BY LIKE '%Region%'
        AND (NOT EXISTS
                (SELECT    *
                FROM    SITE_EVENTS
                WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                        AND EVENT_TYPE_ID = '21.005'
                        AND EVENT_END_PERIOD LIKE '%pulje%')
                )
        --Denne del søger lokaliteter, som har tre af sagsforløbene oprettet, men hvor 21.005 ikke er oprettet. Det er en forudsætning, at der er angivet samme puljenummer samt at der angivet region i bestilt af. Dette er for at forhindre, at der kan være andre sagsforløb med samme kode (f.eks. private, OM, amtsundersøgelser) eller tidligere regionspuljer. Årsagen til, at der skal være angivet "pulje" under 21.005 skyldes, at koden kan være anvendt i andre projekter/sammenhænge.
        --Det er muligt at denne del kan undlades, hvis der oprettes automatisk alle sagsforløb ved opstart af puljerne og sagsbehandleren ikke sletter sagsforløb undervejs!
        OR
        site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_END_PERIOD = site_events_d.EVENT_END_PERIOD
        AND site_events_b.EVENT_ORDERED_BY LIKE '%Region%'
        AND site_events_c.EVENT_ORDERED_BY LIKE '%Region%'
        AND (NOT EXISTS
            (SELECT    *
            FROM    SITE_EVENTS
            WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                    AND EVENT_TYPE_ID IN ('21.210','21.208')
                    AND EVENT_END_PERIOD LIKE '%pulje%')
            )
        --Denne del søger lokaliteter, som har tre af sagsforløbene oprettet, men hvor 21.210 ikke er oprettet. Det er en forudsætning, at der er angivet samme puljenummer samt at der angivet region i bestilt af. Dette er for at forhindre, at der kan være andre sagsforløb med samme kode (f.eks. private, OM, amtsundersøgelser) eller tidligere regionspuljer. Årsagen til, at der skal være angivet "pulje" under 21.210 skyldes, at koden kan være anvendt i andre projekter/sammenhænge.
        --Det er muligt at denne del kan undlades, hvis der oprettes automatisk alle sagsforløb ved opstart af puljerne og sagsbehandleren ikke sletter sagsforløb undervejs!
        OR
        site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_ORDERED_BY LIKE '%Region%'
        AND site_events_d.EVENT_ORDERED_BY LIKE '%Region%'
        AND site_events_c.EVENT_ORDERED_BY LIKE '%Region%'
        AND (NOT EXISTS
            (SELECT    *
            FROM    SITE_EVENTS
            WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                    AND EVENT_TYPE_ID IN ('21.210','21.208','21.005')
                    AND EVENT_END_PERIOD LIKE '%pulje%')
            )
        --Denne del søger lokaliteter, som har to af sagsforløbene oprettet, men hvor 21.210 og 21.005 ikke er oprettet. Det er en forudsætning, at der er angivet samme puljenummer samt at der angivet region i bestilt af. Dette er for at forhindre, at der kan være andre sagsforløb med samme kode (f.eks. private, OM, amtsundersøgelser) eller tidligere regionspuljer. Årsagen til, at der skal være angivet "pulje" under 21.210 og 21.005 skyldes, at koden kan være anvendt i andre projekter/sammenhænge.
        --Det er muligt at denne del kan undlades, hvis der oprettes automatisk alle sagsforløb ved opstart af puljerne og sagsbehandleren ikke sletter sagsforløb undervejs!
        OR
        site_events_a.EVENT_TYPE_ID = site_events_b.EVENT_TYPE_ID
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID IN ('21.210','21.208')
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_a.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_c.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_d.EVENT_END_PERIOD = site_events_b.EVENT_END_PERIOD
        AND site_events_b.EVENT_END_PERIOD LIKE '%light%'
        AND (NOT EXISTS
            (SELECT    *
            FROM    SITE_EVENTS
            WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                    AND EVENT_TYPE_ID = '50.021')
            )
        --Denne del søger lokaliteter, som har tre af sagsforløb oprettet, men hvor 50.021 ikke eksisterer - dvs "ikke" 1-års undersøgelser = light undersøgelser. Det er en forudsætning, at der er angivet samme puljenummer samt at der angivet region i bestilt af. Dette er for at forhindre, at der kan være andre sagsforløb med samme kode (f.eks. private, OM, amtsundersøgelser) eller tidligere regionspuljer. Årsagen til, at der skal være angivet "pulje under
        OR
        site_events_a.EVENT_TYPE_ID = '50.021'
        AND site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID IN ('21.210','21.208')
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_c.EVENT_EXECUTED_BY = site_events_b.EVENT_EXECUTED_BY
        AND site_events_d.EVENT_EXECUTED_BY = site_events_b.EVENT_EXECUTED_BY
        AND site_events_b.EVENT_EXECUTED_BY LIKE '%Region%'
        --Denne del søger lokaliteter, som har alle fire sagsforløb oprettet. Det er en forudsætning, at der er angivet samme puljenummer. Dette er for at forhindre, at der kan være andre sagsforløb med samme kode (f.eks. tidligere regionspuljer - kan være undersøgt af flere omgange, hvis der er flere matrikler/ejendomme på én lokalitet). På disse er der angivet "region" i udført af, som svarer til egne undersøgelser
        OR
        site_events_b.EVENT_TYPE_ID = '21.001'
        AND site_events_c.EVENT_TYPE_ID IN ('21.210','21.208')
        AND site_events_d.EVENT_TYPE_ID = '21.005'
        AND site_events_b.EVENT_EXECUTED_BY = '%Region%'
        AND site_events_a.EVENT_TYPE_ID = site_events_b.EVENT_TYPE_ID
        AND site_events_c.EVENT_EXECUTED_BY = site_events_b.EVENT_EXECUTED_BY
        AND site_events_d.EVENT_EXECUTED_BY = site_events_b.EVENT_EXECUTED_BY
        AND (NOT EXISTS
            (SELECT    *
            FROM    SITE_EVENTS
            WHERE    SITE_SEQ_NO = SITE.SITE_SEQ_NO
                    AND EVENT_TYPE_ID = '50.021')
            )
        --Denne del søger lokaliteter, som har tre af sagsforløb oprettet, men hvor 50.021 ikke eksisterer - dvs "ikke" 1-års undersøgelser = light undersøgelser. Det er en forudsætning, at der er angivet samme puljenummer samt at der angivet region i bestilt af. Dette er for at forhindre, at der kan være andre sagsforløb med samme kode (f.eks. private, OM, amtsundersøgelser) eller tidligere regionspuljer. Årsagen til, at der skal være angivet "pulje under. På disse er der angivet "region" i udført af, som svarer til egne undersøgelser
GO

--GRANT SELECT
    --ON vw_rs_V2_undersoegelser_samlet
--TO READUSER --PUBLIC
--GO
18. februar 2014 - 11:20 #10
Svar fra mig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester