Mensen,
Ik heb een probleem dat verschillende mensen onder ons vast wel eens eerder mee hebben gemaakt:
Stelling: Je hebt 2 tabellen. in het ene tabel bijvoorbeeld auto's:
In het 2e tabel staan koppelingen met een gebuiker-id, want 1 gebruiker kan meerdere auto's bezitten (meer op meer relatie):
Nu wil ik weergeven welke auto's een gebruiker nog NIET heeft. Er moet dus een SQL query komen die er voor zorgt dat alle auto's van het auto tabel worden gehaald, waar het het autoID met de betreffende gebruiker niet bestaat. Poging 1 (userID = 5):
SELECT type FROM auto LEFT JOIN auto_gebruiker ON autoID = ID AND userID = 5 WHERE ID IS NULL
Probleem: Heel logisch en verwacht krijg je nu alleen de auto die nog door NIEMAND in bezig zijn. dus alleen de VW en de MiniCooper.
Poging 2:
SELECT type FROM auto LEFT JOIN auto_gebruiker ON autoID = ID AND userID = 5 WHERE ID IS NULL OR userID != 5
Probleem: Ook wel logisch maar verdomd jammer; We willen alles zien behalve de Peugot en de Renault, MAAR!! maar, Peugot komt toch in de lijst omdat een andere gebruiker deze ook heeft...
Een oplossing kan zijn om eerst alle koppelingen met de huidige gebruiker uit de database te halen. en dan de auto te selecteren met een eindeloze WHERE string als in " WHERE ID != 1 AND ID != 2 AND ID != 3 etc...".
Dit is in dit voorbeeld nog best te doen, maar een zelfde situatie heb ik nu waar wel iets van 30~40 van die dingen voor kunnen komen. En ik vind het dan niet echt een nette oplossing. Heeft iemand voor mij een oplossing zodat ik dit in 1 query kwijt kan?
Ik heb een probleem dat verschillende mensen onder ons vast wel eens eerder mee hebben gemaakt:
Stelling: Je hebt 2 tabellen. in het ene tabel bijvoorbeeld auto's:
code:
1
2
3
4
5
6
| ID TYPE 1 Opel 2 Peugot 3 Renault 4 VW 5 MiniCooper |
In het 2e tabel staan koppelingen met een gebuiker-id, want 1 gebruiker kan meerdere auto's bezitten (meer op meer relatie):
code:
1
2
3
4
5
6
| autoID userID 1 4 1 3 2 4 3 5 2 5 |
Nu wil ik weergeven welke auto's een gebruiker nog NIET heeft. Er moet dus een SQL query komen die er voor zorgt dat alle auto's van het auto tabel worden gehaald, waar het het autoID met de betreffende gebruiker niet bestaat. Poging 1 (userID = 5):
SELECT type FROM auto LEFT JOIN auto_gebruiker ON autoID = ID AND userID = 5 WHERE ID IS NULL
Probleem: Heel logisch en verwacht krijg je nu alleen de auto die nog door NIEMAND in bezig zijn. dus alleen de VW en de MiniCooper.
Poging 2:
SELECT type FROM auto LEFT JOIN auto_gebruiker ON autoID = ID AND userID = 5 WHERE ID IS NULL OR userID != 5
Probleem: Ook wel logisch maar verdomd jammer; We willen alles zien behalve de Peugot en de Renault, MAAR!! maar, Peugot komt toch in de lijst omdat een andere gebruiker deze ook heeft...
Een oplossing kan zijn om eerst alle koppelingen met de huidige gebruiker uit de database te halen. en dan de auto te selecteren met een eindeloze WHERE string als in " WHERE ID != 1 AND ID != 2 AND ID != 3 etc...".
Dit is in dit voorbeeld nog best te doen, maar een zelfde situatie heb ik nu waar wel iets van 30~40 van die dingen voor kunnen komen. En ik vind het dan niet echt een nette oplossing. Heeft iemand voor mij een oplossing zodat ik dit in 1 query kwijt kan?
Some things can not happen until they happen...