Avatar billede dane022 Seniormester
22. april 2005 - 21:03 Der er 10 kommentarer og
1 løsning

Flere kriterie linjer i forespørgsel

Jeg har en forespørgsel jeg gerne vil have resulterer flere forskellige resultater, alt efter om personerne i tabellerne opfylder en eller flere af kriterierne.
Dvs. hvis en person opfylder 2 kriterer, så skal personen have 2 linjer i forespørgslen, kan det lade sig gøre ?
Og så skal det være sådan at hvis nu kriterie 1 er opfyldt, så skal der i feltet expr1 stå f.eks. "udtryk1".
Hvis det er kriterie 2 der er opfyldt, skal der stå "udtryk2" osv.
Avatar billede 2dbornot2db Nybegynder
22. april 2005 - 23:49 #1
Lav en UNION forespørgsel:
I forespørgslens designvisning skifter du til SQL og taster:

SELECT fldPerson as person, "Udtryk1" as Kriterie FROM TableNavn
WHERe....(indtast kriterie1)

UNION ALL SELECT fldPerson as person, "Udtryk2" as Kriterie FROM TableNavn
WHERE...(indtast kriterie2)

ORDER BY fldPerson
Avatar billede dane022 Seniormester
23. april 2005 - 00:28 #2
Hvordan udfyldes (indtast kriterie) ?
Kriteriet kunne f.eks. være at for at komme på forespørgslen, så skal feltet jubilæumsdato være 31 dage eller mindre end dags dato.
Avatar billede 2dbornot2db Nybegynder
23. april 2005 - 00:34 #3
Dit eksempel vil give:
...WHERE [jubilæumsdato] <= date()-31
Avatar billede dane022 Seniormester
23. april 2005 - 12:14 #4
Hvordan skal sætningerne starte, hvis jeg skal lave en 3. sætning ?
Avatar billede 2dbornot2db Nybegynder
23. april 2005 - 16:08 #5
Du kan smide flere på ved at følge syntaksen fra og med 2. sætning. F.eks.:

UNION ALL SELECT fldPerson as person, "Udtryk3" as Kriterie FROM TableNavn
WHERE...(indtast kriterie3)
Avatar billede dane022 Seniormester
24. april 2005 - 17:15 #6
Endnu et spørgsmål: Hvis jeg vil bruge felter fra en anden tabel også, hvordan skal FROM sætningen så se ud ?
Avatar billede 2dbornot2db Nybegynder
24. april 2005 - 17:28 #7
En UNION-forespørgsel er i praktisk henseende en måde at kombinere flere forskellige forespørgsler. Reglen er dog at alle 'delforespørgsler' skal have det samme antal felter med det samme navn. Hvis du derfor inkluderer et ekstra felt i én delforespørgsel skal feltet også inkluderes i de øvrige.

Hvis du f.eks. inkluderer feltet [E-mail] as Mail i én delforespørgsels SELECT-del (og ikke har det i de øvrige) kan du blot for disse skrive "" as Mail. Så kommer der ikke noget output for disse.

For at bruge et felt i et WHERE-kriterie er det dog ikke nødvendigt at bruge det i SELECT-delen. Du kan derfor lave en ny forespørgsel, bruge forespørgselsbyggeren og når du er færdig kopiere SQL-teksten over i din UNION-forespørgsel. Husk blot at alle felter i SELECT-delen skal stå i samme rækkefølge og med samme navn (dvs. samme "as XXX").
Avatar billede dane022 Seniormester
24. april 2005 - 17:55 #8
Men hvordan skal FROM sætningen se ud hvis der skal inkluderes et felt fra en anden tabel end jubilæumsliste? Feltet skal være i alle sætningerne så jeg får ikke det problem du beskriver ovenover.
Avatar billede 2dbornot2db Nybegynder
24. april 2005 - 18:00 #9
Det ved jeg ikke - det kommer an på hvordan du vil joine tabellerne :-)
Prøv at gøre som jeg foreslog:
"Du kan derfor lave en ny forespørgsel, bruge forespørgselsbyggeren og når du er færdig kopiere SQL-teksten over i din UNION-forespørgsel."
Avatar billede 2dbornot2db Nybegynder
25. april 2005 - 16:29 #10
Finder du ud af noget?
Avatar billede dane022 Seniormester
25. april 2005 - 21:29 #11
Jeps, jeg har valgt en anden løsning. jeg kan alligevel godt få kriterierne ind i en alm forespørgsel. men du får point, for din løsning var rigtig nok
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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