SQL-Abfrage ORDER BY

ThompB

Grünschnabel
Hallo!

Ich stehe vor einem Kleinen Problem, ich habe mit folgende Abfrage gemacht:


SELECT tblauftrag.AuftragNr, tblauftragposition.AuftragNr, tblartikel.ArtikelNr, tblauftragposition.ArtikelNr, tblartikel.Bezeichnung, SUM(tblartikel.Verkaufspreis*tblauftragposition.Menge) AS Umsatz

FROM tblauftrag, tblauftragposition, tblartikel
WHERE tblauftrag.AuftragNr = tblauftragposition.AuftragNr
AND tblauftragposition.ArtikelNr = tblartikel.ArtikelNr
GROUP BY tblartikel.ArtikelNr

Jedoch möchte ich nicht nach ArtikelNr groupieren, sondern nach dem stärksten Umsatz sortieren. Mit ORDER BY Umsatz DESC, geht es nicht, leider konnte ich keinen anderen Weg bisher finden. Ist das so möglich, wie ich es mir vorstelle? Wenn ja, wie?

Danke im Vorraus!

Thomas
 
Moin ThompB,
Code:
SELECT tblauftrag.AuftragNr, tblauftragposition.AuftragNr, tblartikel.ArtikelNr, tblauftragposition.ArtikelNr, tblartikel.Bezeichnung, SUM(tblartikel.Verkaufspreis*tblauftragposition.Menge) AS Umsatz

FROM tblauftrag, tblauftragposition, tblartikel
WHERE tblauftrag.AuftragNr = tblauftragposition.AuftragNr
AND tblauftragposition.ArtikelNr = tblartikel.ArtikelNr
ORDER BY SUM(tblartikel.Verkaufspreis*tblauftragposition.Menge)

...auch wenn es hässlich aussieht.

Grüße
Biber
 
Zuletzt bearbeitet:
Das hatte ich auch schon versucht, leider bekomme ich die Fehlermeldung:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
 
Da würde auch nicht das rauskommen was du möchtest.

Warum funktioniert denn deine erste Abfrage nicht? Gibt es einen Fehler oder nicht das gewünschte Ergebnis?

Ich würde immer empfehlen Abfragen erstmal mit dem MySQL Query Browser zu testen und nicht direkt im Programm. Ist einfacher dann was zu ändern.
 
Das soll eine Analyse nach A, B und C Gütern sein, dabei ergeben die A Güter 70% des Gesamten Umsatzes. Somit wollte ich die so ordnen, das die mit den höchsten Umsätzen am Anfang stehen und immer geringer werden. Da wollte ich dann eine Zählerschleife zwischen setzten, die so lange zählt, bis ich die 70% habe.
Jedoch muss ich bevor ich die so zählen kann die Daten in der richtigen Reihenfolge ausgegeben bekommen.
 
Ich wollte nicht wissen was es werden soll sondern was es nicht richtig tut. Denn eigentlich sollte deine Abfrage funktionieren. Habe es mal mit nur einer Tabelle nachgebaut:

Tabelle Articles:
Code:
"id","artnr","menge","preis"
1,1,2,10
2,1,1,10
3,2,1,10
4,3,4,10
5,3,4,10

Abfrage:
SQL:
SELECT artnr, SUM(menge * preis) as Umsatz 
FROM Articles A 
GROUP BY artnr
ORDER BY Umsatz DESC;

Liefert
Code:
"artnr","Umsatz"
3,80
1,30
2,10

Was doch korrekt ist.
 
Ich würde dir nur noch empfehlen Joins statt dem Where zu verwenden. Macht das ganze ein wenig performanter.
 
Zurück