Avatar billede mkjaer Nybegynder
11. januar 2007 - 14:49 Der er 4 kommentarer og
1 løsning

Indsæt én betingelser mere i denne her query?

Hejsa,

Jeg har en tabel med forhandlere og brugere. Der skelnes mellem forhandler og bruger ved at forhandlerid har en værdi hvis der er tale om en bruger. Ellers = 0. Nedenstående skal give mig en liste over forhandlerne, hvor den tæller antallet af brugere (+ trækker lidt flere info ind fra andre tabeller). Det virker også fint, men jeg skal nu have en betingelse indsat for hvilke brugere, som skal tælles med i min count. Der skal status være = 1 - og hvis jeg putter en 'WHERE t2.status=1' ind i slutningen, så får jeg kun udlæst forhandlere, som har en bruger med status=1. Forhandlere helt uden brugere skal jo også med på listen.

SELECT t1.id AS id, t1.navn AS navn, COUNT(t2.kontaktperson) as brugerantal, t1.kontaktperson, certificering.navn, t1.trybuy, t1.kort, t1.sidstonline, t1.sidsteaendring, t1.sidstonline FROM forhandler t1 LEFT JOIN forhandler t2 ON t1.id = t2.forhandlerid LEFT JOIN certificering ON t1.certificering = certificering.id WHERE t1.status=1 AND t1.forhandlerid=0 GROUP BY t1.id

How to?

Hilsen
Martin
Avatar billede kjulius Novice
11. januar 2007 - 18:27 #1
Når du tester på et felt fra en "LEFT JOIN tabel", skal du huske både at teste for både den værdi der skal selekteres på og på Null. Der returneres jo en Null værdi, hvis der ikke findes en række i din "LEFT JOIN tabel" som opfylder join kriteriet.

I stedet for bare at skrive
"AND t2.status = 1"
er du altså nødt til at skrive
"AND (t2.status = 1 OR t2.status IS NULL)
Avatar billede kjulius Novice
11. januar 2007 - 18:30 #2
Alternativt kan du flytte din "AND t2.status = 1" til ON delen på din LEFT JOIN.
Avatar billede mkjaer Nybegynder
11. januar 2007 - 20:52 #3
Det troede jeg egentlig jeg havde prøvet - men det virker, så 1000 tak.
Post et svar, så du kan få lidt point til samlingen.

/MK
Avatar billede mkjaer Nybegynder
11. januar 2007 - 20:53 #4
Det var altså
"AND t2.status = 1" til ON delen på din LEFT JOIN.
som virkede for mig.
Avatar billede kjulius Novice
12. januar 2007 - 00:33 #5
Fint, men begge dele burde nu virke. :-)
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