Ik probeer uit een aantal tabellen met een left-join een resultaat te halen, die ik wil filteren op een eigenschap uit de tabel die ik join. Het punt is dat ik nu ook graag resultaten wil krijgen die geen overeenkomende rijen in de 2e tabel hebben (daarom ook de left-join). Nu dacht ik, als er geen overeenkomende rij is in de 2e tabel worden de velden van die tabel NULL, dus heb ik de where conditie aangepast met 'OR tabel2.eigenschap = NULL', maar dit blijkt niet te werken.
De query:
Ik wil dus templates hebben waarvan de resource_scope_orgin.permissionDomainId voldoet aan een bepaald ID (1 in dit voorbeeld), of helemaal geen scope heeft (resource is global en beschikbaar voor alle domains)
Vast iets heel simpels dat ik over het hoofd zie, maar ik zie het niet
De query:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| SELECT templates.* FROM templates INNER JOIN template_category_assoc AS category ON category.template_id = templates.id INNER JOIN resource AS resource ON resource.identifier = templates.id LEFT JOIN resource_scope_origin AS origin ON origin.resourceId = resource.resourceId WHERE category.category_id = 5 AND resource.resourceTypeId =16 AND (origin.permissionDomainId =1 OR origin.permissionDomainId = NULL) GROUP BY templates.id |
Ik wil dus templates hebben waarvan de resource_scope_orgin.permissionDomainId voldoet aan een bepaald ID (1 in dit voorbeeld), of helemaal geen scope heeft (resource is global en beschikbaar voor alle domains)
Vast iets heel simpels dat ik over het hoofd zie, maar ik zie het niet

[ Voor 3% gewijzigd door Verwijderd op 15-01-2009 22:01 ]