phpbar.de logo

Mailinglisten-Archive

SQL-Problem mit drei Tabellen und Joins

SQL-Problem mit drei Tabellen und Joins

Andreas Habereder mysql-de_(at)_lists.bttr.org
Mon, 11 Feb 2002 02:25:22 +0100


Hi

Es wäre super, wenn mir jemand bei meinem Problem in mySQL helfen könnte:

Drei Tabellen beschreiben Attribute eines Produktes in der Datenbank:

z.B.
attribute_type:
    +----+----------+------+
    | id | name     | unit |
    +----+----------+------+
    |  1 | height   | cm   |
    |  2 | width    | cm   |
    |  3 | diameter | cm   |
    +----+----------+------+

attribute_value:
    +----+----------+
    | id | value    |
    +----+----------+
    |  1 | 10       |
    |  2 | 20       |
    |  3 | 30       |
    |  4 | 222      |
    +----+----------+

attribute:
    +----+----------+----------+------------+
    | id | type_id  | value_id | product_id |
    +----+----------+----------+------------+
    |  1 | 1        | 1        |   21       |
    |  2 | 2        | 2        |   32       |
    |  3 | 2        | 3        |   40       |
    |  4 | 3        | 4        |   21       |
    +----+----------+----------+------------+

In einem Web-Form kann man das Produkt editieren, wobei es auch eine
Attribut-Sektion gibt, wo bestimmten Attributen Produkt-spezifische
Werte zugewiesen werden können.

Das Problem tritt auf, sobald ich Attributen Werte in einem Produkt
zugewiesen habe, werden bei anderen Produkte diese Attribute gar nicht
mehr angezeigt, obwohl diese noch leer, d.h. keinen Wert enthalten.

Anzeigen würde ich gern alle Attribute eines Produktes, unabhängig ob
diese einen Wert haben oder nicht. Leider funktioniert mein Query nicht
so richtig, da ich mit den Joins noch eher nicht ganz fit bin.

Folgenden Query  benutze ich aber irgendwas muss noch falsch sein:

SELECT         at.name, av.value, at.unit,  at.id, a.product_id
FROM            attribute_type at
LEFT OUTER JOIN     attribute a on (at.id = a.type_id)
LEFT OUTER JOIN     attribute_value av on (av.id = a.value_id)
WHERE         (a.product_id = 21 OR a.product_id IS NULL OR a.value_ID
IS NULL OR a.type_ID IS NULL)

viele Grüße
   Andreas


-----------------------------------------
Andreas Habereder
private: ahabereder_(at)_web.de
mobile: +49 172 838 7771
-----------------------------------------

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive