fr@gma: SELECT mit JOIN und LIMIT GROUP BY Problem

Beitrag lesen

Hallo Rouven

danke für Dein Posting.

SELECT
r.kundennummer,
r.rechnungsdatum,
r.rechnungsnummer,
k.anrede,
k.vorname,
k.name,
k.kundennummer,
p.rechnungsnummer,
SUM(p.anzahl * p.einzelpreis)
  GROUP BY p.rechnungsnummer>>
... und geht.
ahhhhhhhhh - ich verfluche MySQL. Was du da baust ist laut SQL-Standard ein falsches Statement. Du darfst in einer Gruppierung nur Spalten selektieren nach denen entweder gruppiert wurde (p.rechnungsnummer),

Leider versteh ich das nicht.

oder die auf einer Aggregatsfunktion (MAX, MIN, SUM, ...) basieren (SUM(p.anzahl * p.einzelpreis)). Für alle anderen Werte liegt nämlich praktisch keine Vorschrift vor, welcher Wert aus der Gruppe genommen werden soll.

Die Tabelle positionen sieht beispielhaft so aus:

rechnungsnummer   anzahl   einzelpreis   id
----------------+--------+-------------+------
1005                2           12        0
1005                1           30        1
1005                1          112        2
1006                1           10        3

usw.

Ich möchte ja die Werte anzahl multiplizieren mit preis
SUM(p.anzahl * p.einzelpreis)

Damit ich die Ausgabe von Rechnungen limitieren kann, muss ich ja die Werte z.B. von 1005 miteinander gruppieren.
Vielleicht habe ich ja hier einen Denkfehler, für mich ist gruppieren gleich bedeutend mit summieren, oder?
Da ich das Produkt von anzahl und preis ja ermittelt habe, bleibt doch eigentlich nur die Summe des Produktes, oder muss ich formulieren:

SUM(p.anzahl * p.einzelpreis) betrag

und im select extra nochmal

p.betrag

mit hinein nehemn?

Wenn sie für die Gruppe alle gleich sind, dann nimm sie in das GROUP BY mit auf, wenn nicht, dann überlege dir bitte unter welchen Gesichtspunkten man den richtigen Wert auswählt.
Nochmal: MySQL akzeptiert dein Statement und reimt sich zusammen was du gemeint haben könntest, aber es ist schlichtweg fehlerhaft...

LG fr@gma