Derefter har jeg lavet relationerne, med en en til mange fra DT_borgerstat til ST_data og en en til mange fra DT_data til ST_data.
når jeg laver en forespørgsel med en AND altså jeg vil gerne finde de fodselsdatoer der har en eks. 2 konkrete registreringer samtidigt, så får jeg intet resultat..
men hvis jeg laver en forespørgsel med en OR altså jeg vil gerne finde de fodselsdatoer, der har 1 af de to registreringer, så får jeg resultat, som jeg skal.
hvordan kan det være jeg ikke får resultat på AND ?
SELECT DT_borgerstat.fodselsdato, DT_data.registrering FROM DT_data INNER JOIN (DT_borgerstat INNER JOIN ST_data ON DT_borgerstat.IDborgerstat = ST_data.DT_borgerstat) ON DT_data.IDdata = ST_data.DT_data WHERE (((DT_data.registrering)="basisaktivering" And (DT_data.registrering)="Uden ydelse under forløb"));
WHERE (((DT_data.registrering)="basisaktivering" And (DT_data.registrering)="Uden ydelse under forløb"));
betyder: Giv mig alle poster, hvor registrering både er lig med "basisaktivering" og samtidig lig med "Uden ydelse under forløb" - og det er der jo ingen poster, der kan være.
Du må nok den tunge vej, f.eks. over to separate forespørgsler, som du så sammensætter:
SELECT DT_borgerstat.fodselsdato, DT_data.registrering FROM DT_data INNER JOIN (DT_borgerstat INNER JOIN ST_data ON DT_borgerstat.IDborgerstat = ST_data.DT_borgerstat) ON DT_data.IDdata = ST_data.DT_data WHERE DT_data.registrering="basisaktivering"
UNION
SELECT DT_borgerstat.fodselsdato, DT_data.registrering FROM DT_data INNER JOIN (DT_borgerstat INNER JOIN ST_data ON DT_borgerstat.IDborgerstat = ST_data.DT_borgerstat) ON DT_data.IDdata = ST_data.DT_data WHERE DT_data.registrering="Uden ydelse under forløb";
Hm. Så er jeg tilbage. Jeg var vist lidt for hurtig sidst. Undskyld forvirringen.
Det nemmeste er nok, hvis du nedbryder opgaven i del-opgaver.
1. Find alle fodselsdatoer med "basisaktivering" 2. Find alle fodselsdatoer med "Uden ydelse under forløb" 3. Find alle, der optræder på begge lister
Ad 1) Opret en forespørgsel, f.eks. Q_Basis: SELECT ST_data.DT_borgerstat FROM DT_data INNER JOIN ST_data ON DT_data.IDdata = ST_data.DT_data WHERE DT_data.registrering="basisaktivering";
Ad 2) Opret en forespørgsel, f.eks. Q_Ydelse: SELECT ST_data.DT_borgerstat FROM DT_data INNER JOIN ST_data ON DT_data.IDdata = ST_data.DT_data WHERE DT_data.registrering="Uden ydelse under forløb";
Ad 3) Opret resultat-forespørgslen: SELECT DT_borgerstat.fodselsdato FROM (Q_Basis INNER JOIN Q_Ydelse ON Q_Basis.DT_borgerstat = Q_Ydelse.DT_borgerstat) INNER JOIN DT_borgerstat ON Q_Ydelse.DT_borgerstat = DT_borgerstat.IDborgerstat;
Hvis du smider SQL-udtrykkene ind i forespørgselsdesigneren, bliver overblikket måske lidt bedre ;O)
Jeg vil tro, at det samme vil kunne opnås ved en lille omskrivning af den oprindelige forespørgsel, der joiner til DT_Data to gange og i udvælgelsen angiver forskelligt alias (de to DT_Data skal have nyt navn, da de ellers ikke kan refereres) i selektionen på status.
SELECT DT_borgerstat.fodselsdato, DT_data.registrering FROM ((DT_borgerstat INNER JOIN ST_data ON DT_borgerstat.IDborgerstat = ST_data.DT_borgerstat) INNER JOIN DT_data AS DT_DATA1 ON DT_data1.IDdata = ST_data.DT_data) INNER JOIN DT_data AS DT_DATA2 ON DT_data2.IDdata = ST_data.DT_data WHERE (((DT_data1.registrering)="basisaktivering" And (DT_data2.registrering)="Uden ydelse under forløb"));
Jeg må hellere lige tilføje, at du bliver nødt til at ændre feltet DT_data.registrering til DT_data1.registrering (eller DT_data2.registerring) i SELECT statementet afhængig af hvad du vil vise.
Hej tak til jer begge 2, Jeg beklager jeg ikke er vendt tilbage angående det her, men jeg er i den grad blevet sat på en anden opgave så jeg har ikke lige nu mulighed for at prøve det af i har foreslået, men jeg vender tilbage til det..
I mellemtiden kan i 2 så ikke indsende et svar hver, så i deler pointene ?
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.
Stephen Alstrup stiftede for syv år siden Supwiz med tårnhøje ambitioner, og nu har han solgt selskabet til en norsk koncern: “Et utal af gange er jeg gået grædende i seng om aftenen”