Dieter: MySQL Verständnisfrage

Ich stehe vor einem kleinem Verständnisproblem und hoffe auf eure Tips:

Die Datenbank besteht u.a. aus zwei Tabellen, die eine beinhalt Kategorien, die andere Produkte. Innerhalb der Produkttabelle verweist ein Eintrag (kategorie_id) auf die Kategorie die diesem Produkt zugeordnet ist.

Mein Problem ist nun, das ich die Kategorien in der Reihenfolge der Summe der darin enthaltenen Produktepreise ausgeben möchte...

Vom Prinzip her also: SELECT kategorienname FROM kategorien ORDER BY (SELECT SUM(artiklpreis) FROM produkte GROUP BY kategorie_id)

Natürlich funktioniert das nicht, weil ich keine Beziehung zu der Kategorie habe...

Also meine Frage an euch: Wie kann man das elegant per SQL lösen?

  1. Hallo Dieter,

    Also meine Frage an euch: Wie kann man das elegant per SQL lösen?

    Mit einem JOIN:

    SELECT
      kategorienname, SUM(artikelpreis)
    FROM
      kategorien
    LEFT JOIN produkte ON
      produkte.kategorie_id = kategorien.kategorie_id
    GROUP BY kategorie_id, kategoriename
    ORDER BY SUM(artikelpreis)
    

    LG,
    CK

    1. Hallo ck,

      vielen Dank! Eigentlich logisch, aber ich kam wirklich nicht drauf.

      VG Dieter