Mailinglisten-Archive |
Hallo Carlo, also wenn ich dich richtig verstanden habe: in der Tabelle 'matrix' ist beschreiben, welches Objekt in welchen Kategorien vorkommt. Also vielleicht so (ungetestet): SELECT objects.oID, objects.titel, objects.descr, autoren.name, categorie.cId, categorie.descr FROM objects JOIN matrix ON matrix.oID = objects.oID JOIN categorie ON categorie.cID = matrix.cID JOIN autoren ON autoren.kID = objects.kID WHERE objects.oID = 17 OR objects.oID = 123 OR objects.oID = 236 Wie gesagt, alles ungestestet :-/ Grüße Christian Carlo schrieb: > Hallo, > > zu einigen Objekten gibt es Categorien und eine Kreuztabelle um > die beiden zu verknüpfen, da ein Objekt in mehreren Categorien > vorkommen kann (1/n). > Nun möchte ich die Abfrage gerne optimieren. Derzeit frage ich > die Objekte ab und mit einem extra Query pro Objekt die passenden > Categorien dieses Objektes. > z.B.: > SELECT ob.oID, ob.titel, kr.name, ob.descr > FROM objects AS ob > LEFT JOIN autoren AS kr ON ob.kID = kr.kID > WHERE ob.oID IN (17, 123, 236); > > und dann noch: > SELECT ct.cID, ct.descr FROM categorie AS ct > LEFT JOIN matrix AS ma ON ma.cID = ct.cID > WHERE ma.oID = 17; > SELECT ct.cID, ct.descr FROM categorie AS ct > LEFT JOIN matrix AS ma ON ma.cID = ct.cID > WHERE ma.oID = 123; > SELECT ct.cID, ct.descr FROM categorie AS ct > LEFT JOIN matrix AS ma ON ma.cID = ct.cID > WHERE ma.oID = 236; > > Abschliessend durchwandere ich das Ergebnis und hänge an jeden > Record, die gefundenen Categorien an. > > Geht das eventuell auch direkt in SQL ? > > > mit bestem Gruß Carlo > > >
php::bar PHP Wiki - Listenarchive