JOIN mit 3,5 Tabellen vereinfachen / prüfen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • JOIN mit 3,5 Tabellen vereinfachen / prüfen

    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:

    PHP-Code:
    SELECT w.warengruppen_id,
           
    a.ida.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 (35)
           
    LEFT JOIN
           rabatte r2 ON r2
    .hersteller_id a.hersteller_id
    GROUP BY r2
    .id 
    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

  • #2
    nimm die Tabelle artikel als Haupttabelle und join von da aus

    Kommentar

    Lädt...
    X