code:
1
2
3
4
5
6
7
| nodes users categories stories comments ----- ----- ---------- ------- -------- nid uid cid nid cid title name url body body created category uid type |
In de tabel nodes houd ik alle content bij die aan de website wordt toegevoegd. Momenteel zijn er meerdere content typen, waaronder 'story' (staan in de stories tabel) en 'comment' (staan in de comments tabel). (De nid uit de nodes tabel correspondeert met de cid uit de comments tabel) De gebruiker kan zelf verschillende categorien stories aanmaken, bijvoorbeeld 'persberichten', 'recepten' en 'analyses'. Nu wil ik een chronologisch overzicht maken van alle content die aan de website werd toegevoegd. Momenteel lees ik alle stories uit:
SQL:
1
2
3
4
5
6
| SELECT n.title, n.created, n.uid, s.*, u.name, c.url FROM nodes n LEFT JOIN stories s ON s.nid = n.nid LEFT JOIN users u ON u.uid = n.uid LEFT JOIN categories c ON c.cid = s.category WHERE n.type = 'story' |
Hier mee maak ik het volgende overzicht:
code:
1
2
3
4
5
| Titel Categorie Created Auteur ------------------------------------------------- NS-Quiz met... Persberichten 2 mei 2006 Admin Ik heb toen... Weblog 1 mei 2006 Peer Zandtaartjes.. Recepten 5 feb 2006 Erik |
Nu wil ik graag de comment aan dit overzicht toevoegen. Met andere woorden:
code:
1
2
3
4
5
6
7
| Titel Categorie Created Auteur ------------------------------------------------- Hulde dat jij. Comments 5 mei 2006 Admin NS-Quiz met... Persberichten 2 mei 2006 Admin Ik heb toen... Weblog 1 mei 2006 Peer Ik vind dat... Comments 8 mrt 2006 Dave Zandtaartjes.. Recepten 5 feb 2006 Erik |
Ik krijg alleen de query hiervoor niet goed. Ik heb nu dit:
SQL:
1
2
3
4
5
6
7
| SELECT n.title, n.created, n.uid, s.*, u.name, c.url, m.* FROM nodes n LEFT JOIN stories s ON s.nid = n.nid LEFT JOIN users u ON u.uid = n.uid LEFT JOIN categories c ON c.cid = s.category LEFT JOIN comments m ON m.cid = n.nid WHERE n.type = 'story' OR n.type = 'comment' |
Dit werk alleen niet helemaal. Ik krijg wel een resultset, maar zo krijg ik de verkeerde namen bij de comments. Ook heeft geen enkele comment een nod (node-id) en body.
Ik hoop dat deze informatie genoeg is om mij te zeggen wat er voud is aan deze query
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."