Me heb een probleem met maieskjuel MySQL 3.x. Situatieschets:
Ik heb een basis tabel (persons) met 4 records:
id, name
1. kees
2. sjaak
3. flip
4. joep
En een kopel tabel (sending) met meerdere records:
person_id, letter_id
1. 3.
2. 5.
3. 5.
3. 2
2. 1
Nu wil ik weten wie een bepaalde brief (letter_id = x) heeft ontvangen, en wel zo dat ik alle persoon namen terug krijg met daarachter een kolom ja / nee.
letter_id:5
kees nee
sjaak ja
flip ja
joep nee
Dit wordt dus een SELECT uit de persons tabel met een LEFT JOIN op de sending tabel. Punt is dat een persoon ook andere brieven ontvangen kan hebben, of nog geen enkele. In het geval een persoon meerdere brieven heeft ontvangen moet er alleen de letter_id = 5 terug komen.
In het geval een persoon nog niets heeft ontvangen moet zijn naam wel in het resultaat terug komen.
Een WHERE clause geeft te weinig terug, namelijk niet de personen die nog niks hebben ontvangen. Een gewone join geeft te veel terug, namelijk alle mogelijkheden.
Is er iemand die mij kan vertellen hoe ik dit probleem kan aanpakken?
Ik heb een basis tabel (persons) met 4 records:
id, name
1. kees
2. sjaak
3. flip
4. joep
En een kopel tabel (sending) met meerdere records:
person_id, letter_id
1. 3.
2. 5.
3. 5.
3. 2
2. 1
Nu wil ik weten wie een bepaalde brief (letter_id = x) heeft ontvangen, en wel zo dat ik alle persoon namen terug krijg met daarachter een kolom ja / nee.
letter_id:5
kees nee
sjaak ja
flip ja
joep nee
Dit wordt dus een SELECT uit de persons tabel met een LEFT JOIN op de sending tabel. Punt is dat een persoon ook andere brieven ontvangen kan hebben, of nog geen enkele. In het geval een persoon meerdere brieven heeft ontvangen moet er alleen de letter_id = 5 terug komen.
In het geval een persoon nog niets heeft ontvangen moet zijn naam wel in het resultaat terug komen.
Een WHERE clause geeft te weinig terug, namelijk niet de personen die nog niks hebben ontvangen. Een gewone join geeft te veel terug, namelijk alle mogelijkheden.
Is er iemand die mij kan vertellen hoe ik dit probleem kan aanpakken?
[ Voor 2% gewijzigd door NMe op 27-09-2005 21:19 . Reden: Als je jezelf een beetje verstaanbaar wil maken, noem het beestje dan asjeblieft gewoon bij zijn naam. :) ]
On track