Een vraag over MySQL met betrekking tot één query op 3 tabellen. Ik vraag me af of wat ik in dit geval wil überhaupt wel mogelijk is met MySQL. Het zou mijn systeem een stuk efficiënter maken.
Het gaat om 3 verschillende tabellen. Eén hoofdtabel met algemene informatie over objecten die gebruikt worden in een CMS omgeving. De twee "sub"-tabellen vullen elk op hun eigen manier het "Hoofd"-object aan met specifieke informatie. Een versimpelde weergave van de tabellen zou er ongeveer zo uit kunnen zien:
De hoofdtabel
Eerste subtabel (pagina)
Tweede subtabel (ander item)
Wat ik nu graag wil, is met één query alle items uit de database tabellen halen, die in een specifiek menu (menuID) staan. Voor de volledigheid, zowel de pagina's als de andere items kunnen in hetzelfde menu staan. De 'menuorder' geeft in dit geval aan op welke positie een item in het menu moet komen te staan. Ik wil graag alle objecten gesorteerd uit de database halen, zodat ik dit niet later nog eens in PHP hoef te doen.
De query waartoe ik op dit moment ben gekomen, ziet er ongeveer zo uit:
Zoals duidelijk zal zijn geeft dit niet het gewenste resultaat, omdat nu eerst op de menuorder kolom in tabel A wordt gesorteerd en daarna op de menuorder kolom in tabel B. De twee menuorder kolommen moet nu juist gecombineerd worden.
Wie is er zo los op MySQL, dat hij/zij kan vertellen of wat ik wil ook daadwerkelijk mogelijk is. Helaas draaien de LIVE servers waarmee ik moet werken (nog) niet met een MySQL versie waarmee sub-queries mogelijk zijn ... dat is dus geen optie.
Mijn dank is groot voor alle hulp
Het gaat om 3 verschillende tabellen. Eén hoofdtabel met algemene informatie over objecten die gebruikt worden in een CMS omgeving. De twee "sub"-tabellen vullen elk op hun eigen manier het "Hoofd"-object aan met specifieke informatie. Een versimpelde weergave van de tabellen zou er ongeveer zo uit kunnen zien:
De hoofdtabel
code:
1
2
3
4
| objectID INT(11) PRIMARY KEY caption VARCHAR(100) created_by INT(11) live_version INT(11) |
Eerste subtabel (pagina)
code:
1
2
3
4
5
6
| objectID INT(11) PRIMARY KEY version INT(11) PRIMARY KEY titel VARCHAR(100) content TEXT menuID INT(11) menuorder INT(11) |
Tweede subtabel (ander item)
code:
1
2
3
4
5
| objectID INT(11) PRIMARY KEY version INT(11) PRIMARY KEY content TEXT menuID INT(11) menuorder INT(11) |
Wat ik nu graag wil, is met één query alle items uit de database tabellen halen, die in een specifiek menu (menuID) staan. Voor de volledigheid, zowel de pagina's als de andere items kunnen in hetzelfde menu staan. De 'menuorder' geeft in dit geval aan op welke positie een item in het menu moet komen te staan. Ik wil graag alle objecten gesorteerd uit de database halen, zodat ik dit niet later nog eens in PHP hoef te doen.
De query waartoe ik op dit moment ben gekomen, ziet er ongeveer zo uit:
code:
1
2
3
4
| SELECT DISTINCT ( objectID ) FROM objects O, pages A, items B WHERE ( ( A.menuID =6 AND A.objectID = O.objectID ) OR ( B.menuID =6 AND B.objectID = O.objectID ) ) ORDER BY A.menuorder, B.menuorder |
Zoals duidelijk zal zijn geeft dit niet het gewenste resultaat, omdat nu eerst op de menuorder kolom in tabel A wordt gesorteerd en daarna op de menuorder kolom in tabel B. De twee menuorder kolommen moet nu juist gecombineerd worden.
Wie is er zo los op MySQL, dat hij/zij kan vertellen of wat ik wil ook daadwerkelijk mogelijk is. Helaas draaien de LIVE servers waarmee ik moet werken (nog) niet met een MySQL versie waarmee sub-queries mogelijk zijn ... dat is dus geen optie.
Mijn dank is groot voor alle hulp