Avatar billede deepcore Nybegynder
06. juni 2005 - 17:24 Der er 4 kommentarer og
1 løsning

Select af tabeller hvor funktion = a&b&c

Hejsa. Simpelt spørgsmål:

jeg har tre tabeller, person ,pers_funk og funktion. Disse tabeller beskriver forholdet mellem en person og en funktion. Da en person i min verden kan have flere funktioner er pers_funk sat mellem dem som en associationsklasse der indeholder begge tabellers primærnøgler.

hvorledes skriver jeg at jeg gerne vil have fat i de personer der bestrider både funktion "A" og funktion "B" og funktion "C"?

Hvis jeg ville have dem der bestred EN ELLER FLERE af funktionerne ville jeg skrive:

SELECT distinct person.personid FROM person, pers_funk, funktion
WHERE person.personId = pers_funk.personId AND funktion.funktionsId = pers_funk.funktionsId AND funktion.funktionsId IN('1','2','3');

.... men hvorledes får jeg fat i dem der BÅDE har funktion 1,2 og 3?
Avatar billede arne_v Ekspert
06. juni 2005 - 18:00 #1
Du bliver nok nødt til at lave en 3 dobbelt self join
Avatar billede arne_v Ekspert
06. juni 2005 - 18:03 #2
SELECT *
FROM person p,pers_funk pf1,pers_funk pf2,pers_funk pf3,funktion f1,funktion f2,funktion f3
WHERE p.personID=pf1.personID AND p.personID=pf2.personID AND p.personID=pf3.personID AND
pf1.funktionsID=f1.funktionsID AND pf2.funktionsID=f2.funktionsID AND pf3.funktionsID=f3.funktionsID AND
f1.navn='A' AND f2.navn='B' AND f3.navn='C'
Avatar billede deepcore Nybegynder
07. juni 2005 - 09:49 #3
hm... det var da møgbesværligt, men ok. point til dig.
Avatar billede arne_v Ekspert
07. juni 2005 - 10:07 #4
svar
Avatar billede arne_v Ekspert
07. juni 2005 - 10:08 #5
alternativt kan det i MySQL 4.1 laves med ... WHERE ... IN (SELECT ...) AND ... IN (SELECT ...) AND ... IN (SELECT ...)
men jeg synes ikke at det er pænere
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