Geïnspireerd door Crisp's blog en omdat ik wel eens ben uitgekeken op meerdere subquery's binnen PHP. Ben ik aan het proberen om met een join uit 2 tabellen een menu te maken voor m'n cms.
tabel 1, pages:
tabel 2, pages_dirs:
Ik heb de tabellen vereenvoudigd.
En met de volgende query probeer ik ze samen te voegen, de 5 is $userrang de 9 is $siteid
Wat resulteerd in deze set:
Echter omdat de pagina's "home" en "Leeg" status 10 hebben, zou ik alleen 1 maal de map home willen hebben. Maar als ik de OR op regel 7 verander in een AND, krijg ik een lege set terug.
Nu is dit voor mij de eerste keer dat ik met een JOIN werk, en zie even door het bos de bomen niet meer.
tabel 1, pages:
code:
1
2
3
4
| name menustatus dir_id site |
tabel 2, pages_dirs:
code:
1
2
3
| name menustatus site |
Ik heb de tabellen vereenvoudigd.
En met de volgende query probeer ik ze samen te voegen, de 5 is $userrang de 9 is $siteid
SQL:
1
2
3
4
5
6
7
8
| SELECT pages.menustatus AS pagestatus, pages.name AS pagename, pages_dirs.menustatus AS dirstatus, pages_dirs.name AS dirname FROM pages_dirs LEFT JOIN pages ON pages.dir_id = pages_dirs.id WHERE (pages_dirs.site = 9 OR pages.site = 9) AND (pages_dirs.menustatus <= 5 OR (pages.menustatus = NULL OR pages.menustatus <= 5) ) ORDER BY pages_dirs.menuposition, pages.menuposition |
Wat resulteerd in deze set:
code:
1
2
3
4
5
6
| pagestatus pagename dirstatus dirname 10 home 0 home 10 Leeg 0 home NULL NULL 0 nieuws NULL NULL 0 weblog NULL NULL 0 gastenboek |
Echter omdat de pagina's "home" en "Leeg" status 10 hebben, zou ik alleen 1 maal de map home willen hebben. Maar als ik de OR op regel 7 verander in een AND, krijg ik een lege set terug.
Nu is dit voor mij de eerste keer dat ik met een JOIN werk, en zie even door het bos de bomen niet meer.
M'n Oma is een site aan het haken.