Hallo zusammen,
ich habe ein kleines Problem mit einer Query.
Die Datenbank besteht (vereinfacht) aus einer Tabelle mit Objekten, und einer Tabelle mit Attributen.
Ein Objekt kann mehrere Attribute besitzen (1:n Beziehung)
Object
------
id(pk)
typ(varchar);
...
Attribute
-----
id(pk)
name(varchar)
value(varchar)
object_id(fk)
Die Query soll alle Objekte zurückliefern, sortiert nach dem Wert eines bestimmten Attributes.
Was ich bisher habe:
select obj.* from Object obj LEFT JOIN (Attribute att) ON (att.object_id = obj.id) WHERE att.name = "attributeName" ORDER BY att.value;
Das funktioniert soweit sehr gut, hat aber ein Nachteil.
Es werden nur Objekte selektiert, die auch dieses Attribut haben. Es gibt aber auch Objekte ohne dieses Attribut, und die sollen auch angezeigt werden (z.B. so sortiert, als wenn das Attribut existiert und als value einen Leerstring hat).
Ist das in einer Query Möglich?
Wenn ja wie?
Danke für die Hilfe.
ich habe ein kleines Problem mit einer Query.
Die Datenbank besteht (vereinfacht) aus einer Tabelle mit Objekten, und einer Tabelle mit Attributen.
Ein Objekt kann mehrere Attribute besitzen (1:n Beziehung)
Object
------
id(pk)
typ(varchar);
...
Attribute
-----
id(pk)
name(varchar)
value(varchar)
object_id(fk)
Die Query soll alle Objekte zurückliefern, sortiert nach dem Wert eines bestimmten Attributes.
Was ich bisher habe:
select obj.* from Object obj LEFT JOIN (Attribute att) ON (att.object_id = obj.id) WHERE att.name = "attributeName" ORDER BY att.value;
Das funktioniert soweit sehr gut, hat aber ein Nachteil.
Es werden nur Objekte selektiert, die auch dieses Attribut haben. Es gibt aber auch Objekte ohne dieses Attribut, und die sollen auch angezeigt werden (z.B. so sortiert, als wenn das Attribut existiert und als value einen Leerstring hat).
Ist das in einer Query Möglich?
Wenn ja wie?
Danke für die Hilfe.
Comment