Hallo,
ich habe durch stundenlanges Grübeln und Experimentieren eine Query zusammengebracht, die anscheinend das macht, was ich will.
Ob sie auch später das machen wird, was sie soll, weiß ich momentan noch nicht. Ich würde nun gerne wissen, ob sie wirklich das macht, was ich haben will, oder ob es nur Zufall ist, dass ich das bekomme, was ich haben will. Außerdem würde ich gerne wissen, ob es eine einfachere Lösung für mein Problem gibt ... oder wie es hier mit der Performance aussieht, wenn sich die Datensätze mehren.
Tabellen:
artikel: id, hersteller_id, ...
zuweisungen: id, warengruppen_id, artikel_id, ...
rabatte: id, warengruppen_id, hersteller_id, rabatt, ...
Problem:
Im Warenkorb befinden sich X Artikel (jeweils die Artikel-Id wird gespeichert). Das Ergebnis der Query soll liefern:
Die vorhandenen Rabatte für alle Artikel des Warenkorbes, abhängig von deren Hersteller_Id und Warengruppen_Id.
Beispiel:
Artikel 3 befindet sich in der Warengruppe 2 und hat die Hersteller_Id 4.
Artikel 5 befindet sich in der Warengruppe 2 und hat die Hersteller_Id 7.
In der Tabelle rabatte gibt es für für Warengruppen_Id 2 und Hersteller_Id 4 3 % Rabatt, für die Warengruppen_Id 2 und Hersteller_Id 7 5 % Rabatt.
Meine Query:
Wenn ich die Tabelle rabattgruppen nur einmal einbinde, erhalte ich vollkommen falsche Werte, unabhängig davon, nach was ich gruppiere.
Kann mir das jemand erklären?
Vielen Dank,
pb
ich habe durch stundenlanges Grübeln und Experimentieren eine Query zusammengebracht, die anscheinend das macht, was ich will.
Ob sie auch später das machen wird, was sie soll, weiß ich momentan noch nicht. Ich würde nun gerne wissen, ob sie wirklich das macht, was ich haben will, oder ob es nur Zufall ist, dass ich das bekomme, was ich haben will. Außerdem würde ich gerne wissen, ob es eine einfachere Lösung für mein Problem gibt ... oder wie es hier mit der Performance aussieht, wenn sich die Datensätze mehren.
Tabellen:
artikel: id, hersteller_id, ...
zuweisungen: id, warengruppen_id, artikel_id, ...
rabatte: id, warengruppen_id, hersteller_id, rabatt, ...
Problem:
Im Warenkorb befinden sich X Artikel (jeweils die Artikel-Id wird gespeichert). Das Ergebnis der Query soll liefern:
Die vorhandenen Rabatte für alle Artikel des Warenkorbes, abhängig von deren Hersteller_Id und Warengruppen_Id.
Beispiel:
Artikel 3 befindet sich in der Warengruppe 2 und hat die Hersteller_Id 4.
Artikel 5 befindet sich in der Warengruppe 2 und hat die Hersteller_Id 7.
In der Tabelle rabatte gibt es für für Warengruppen_Id 2 und Hersteller_Id 4 3 % Rabatt, für die Warengruppen_Id 2 und Hersteller_Id 7 5 % Rabatt.
Meine Query:
PHP-Code:
SELECT w.warengruppen_id,
a.id, a.hersteller_id,
r2.rabatt_1 AS rg
FROM rabatte r
LEFT JOIN
zuweisungen w ON r.warengruppen_id = w.warengruppen_id
LEFT JOIN
artikel a ON w.artikel_id = a.id AND a.id IN (3, 5)
LEFT JOIN
rabatte r2 ON r2.hersteller_id = a.hersteller_id
GROUP BY r2.id
Kann mir das jemand erklären?
Vielen Dank,
pb
Kommentar