Ich habe drei Tabellen, aus denen ich Daten mit Hilfe eines left joins auslese. Bis auf das Auslesen der Punkte (in Tablle 3 gespeichert) funktioniert auch alles bestens. Ich nehme an, es liegt daran, dass ich im "ON"-Teil zwei Felder (produkt_id und farb_id) von Tabelle 3 mit den enstprechenden Feldern aus Tabelle 2 vergleiche.
SELECT t1.hersteller, t1.produkt, t2.*, t3.punkte
FROM `tabelle1` t1
LEFT JOIN (`tabelle2` t2, `tabelle3` t3) ON (t2.produkt_id = t1.produkt_id AND t3.farb_id = t2.farb_id AND t3.produkt_id = t2.produkt_id)
WHERE t1.hersteller="'.$hersteller.'"
ORDER BY t3.punkte DESC, t1.produkt DESC
Kann mir jemand einen Tipp geben, wie ich das Problem umgehen kann, ohne eine zusätzliche ID einführen zu müssen?
Hier meine Datenbankstruktur:
tabelle 1:
produkt_id
hersteller
produkt
..
.
tabelle 2:
id
produkt_id
farb_id
..
.
tabelle 3:
id
produkt_id
farb_id
punkte
Tabelle 1 enthält die Hauptdaten der verschiedenen Produkte.
Tabelle 2 enthält Daten über die verschiedenen Farbvarianten.
Tabelle 3 enthält ausschließlich Punkte für die verschiedenen Farbvarianten.
SELECT t1.hersteller, t1.produkt, t2.*, t3.punkte
FROM `tabelle1` t1
LEFT JOIN (`tabelle2` t2, `tabelle3` t3) ON (t2.produkt_id = t1.produkt_id AND t3.farb_id = t2.farb_id AND t3.produkt_id = t2.produkt_id)
WHERE t1.hersteller="'.$hersteller.'"
ORDER BY t3.punkte DESC, t1.produkt DESC
Kann mir jemand einen Tipp geben, wie ich das Problem umgehen kann, ohne eine zusätzliche ID einführen zu müssen?
Hier meine Datenbankstruktur:
tabelle 1:
produkt_id
hersteller
produkt
..
.
tabelle 2:
id
produkt_id
farb_id
..
.
tabelle 3:
id
produkt_id
farb_id
punkte
Tabelle 1 enthält die Hauptdaten der verschiedenen Produkte.
Tabelle 2 enthält Daten über die verschiedenen Farbvarianten.
Tabelle 3 enthält ausschließlich Punkte für die verschiedenen Farbvarianten.
Kommentar