phpbar.de logo

Mailinglisten-Archive

[dbs] wie Querys organisieren

[dbs] wie Querys organisieren

Christian Wohlgemuth info at codesign-online.de
Fre Jan 16 09:03:22 CET 2009


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