Announcement

Collapse
No announcement yet.

Problem bei Query

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem bei Query

    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.

  • #2
    Hallo,
    Originally posted by Marc-1 View Post
    ...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).
    Dafür musst du die zusätzliche Bedingung mit in den OUTER JOIN packen und nicht in die Where-Klausel.

    [highlight=sql]
    select obj.*
    from Object obj
    LEFT JOIN Attribute att ON att.object_id = obj.id and att.name = "attributeName"
    ORDER BY IFNULL(att.value, '')
    [/highlight]

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment

    Working...
    X