Mailinglisten-Archive |
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