Avatar billede pissed_squirrel Nybegynder
25. januar 2009 - 15:31 Der er 6 kommentarer og
1 løsning

Join og Where returnerer ingenting!

Hej Eksperter

Jeg har et problem med min SQL sætning, som ikke returnere det ønskede.

Selve sætningen ser sådan ud

SELECT t1.ID, t1.Program, t2.* FROM iw_program AS t1 LEFT JOIN iw_program_subscribers AS t2 ON t1.ID = t2.Program WHERE t1.ID = '10' AND t2.UserID = '9'

Problemet ligger i, at der ikke bliver returneret noget hvis der ikke findes et UserID med 9, og det er jo det jeg ønsker

Hvordan kommer jeg nemmest rundt om dette?

Tak på forhånd

Ps. sætter gerne flere point til rådighed hvis det skal til :P
Avatar billede pissed_squirrel Nybegynder
25. januar 2009 - 15:33 #1
Det skal lige siges at hvis der findes et UserID med 9 samtidig med at ID er 10 så returnerer den selvfølgelig noget, og det er jo også fint nok

Problemet er bare at den ikke returnerer hvad der er i t1 selv om der ikke findes noget i t2 som der kan relateres til, hvis det altså giver mening
Avatar billede pissed_squirrel Nybegynder
25. januar 2009 - 15:39 #2
For at gøre det lidt nemmere kan vi også bruge

SELECT * FROM iw_program AS t1 LEFT JOIN iw_program_subscribers AS t2 ON t1.ID = t2.Program WHERE t1.ID = '10' AND t2.UserID = '9'

i stedet, men det kommer jeg jo ikke uden om problemet på.
Avatar billede arne_v Ekspert
25. januar 2009 - 15:57 #3
prøv:

SELECT * FROM iw_program AS t1 LEFT JOIN iw_program_subscribers AS t2 ON t1.ID = t2.Program AND t2.UserID = '9' WHERE t1.ID = '10'
Avatar billede pissed_squirrel Nybegynder
25. januar 2009 - 16:11 #4
Hvor er det dog vildt!

Endnu engang redder du dagen arne_v

Smid et svar og du skal få point hvis du lyster :)

Jeg siger mange tak og bukker dybt
Avatar billede arne_v Ekspert
25. januar 2009 - 16:27 #5
svar
Avatar billede arne_v Ekspert
25. januar 2009 - 16:28 #6
Jeg tror også at følgende ville have virket:

SELECT * FROM iw_program AS t1 LEFT JOIN iw_program_subscribers AS t2 ON t1.ID = t2.Program WHERE t1.ID = '10' AND (t2.UserID = '9' OR t2.UserID IS NULL)

Men ideen med at smide en WHERE betingelse som kun giver mening hvis der findes noget
på højre side af LEFT JOIN opi ON er generelt brugbar.
Avatar billede pissed_squirrel Nybegynder
25. januar 2009 - 17:36 #7
Super mange tak arne_v
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