SQL SELECT Berechnung eines Gesammtpreises
Hi,
ich habe ein Problem mit einem SQL SELECT Befehl. Ich glaube ich habe einen Denkfehler und brauche eure Hilfe :)
Problem:
Tabelle Bestellungen
BestellungsNr (PK), KundenNr
2001 , 1001
2002 , 1002
Tabelle Bestellpositionen
BestellungsNr (PK), ProduktNr(PK), Menge
2001 , 10001 , 2
2001 , 10021 , 1
2002 , 10001 , 1
2002 , 10021 , 2
Tabelle Produkte
ProduktNr(PK), Preis
10001 , 5.1
10021 , 7.99
Nun möchte ich den Gesamtwert der Bestellung ausgeben. Ich habe nun über INNER JOIN die Tabellen verbunden. Weiß aber nun nicht wie ich das ganze berechnen soll.
Menge * Preis ist Ok. Aber wie bring nun noch die ProduktNr mit rein, damit man weiß welche Menge * Preis genommen werden soll und wie werden dann die anderen Produkt Preise bei einer Bestellung addiert?
Ich hoffe das ist verständlich. Ich möchte also quasi nur die BestellungsNr und den Gesamtwert ausgeben. Der Gesamtwert pro Bestellung soll berechnet werden.
Mein bisheriger Ansatz:
SELECT BestellungsNr, SUM(Gesamtwert) FROM (SELECT (Preis * Menge) AS Gesamtwert FROM Bestellungen
INNER JOIN Bestellpositionen ON (Bestellungen.BestellungsNr = Bestellpositionen.BestellungsNr)
INNER JOIN Produkte ON (Bestellpositionen.ProduktNr = Produkte.ProduktNr));
Hoffentlich kann mir jemand helfen :)
Gruß
2 Antworten
Du brauchst doch dazu nicht die Produkt-Nr. Für die Gesamtsumme ist nur der Preis mit Menge relevant, für die Auswahl die Bestell-Nr.
Du willst doch alle Produkte für eine Bestellung. Die bekommst Du über die Bestell-Nr. Du musst also irgendwo in Deiner Abfrage die Bedingung haben
WHERE bestell-nr = 12345
Damit bekommst Du alle Produkte der Bestell-Nr 12345.
Du musst nun unterscheiden, ob Du den Gesamtpreis der Bestellung haben möchtest oder eine Auflistung der betreffenden Produkte.Wenn Du beides brauchst, sind zwei Abfragen nötig.
Hi,
danke für die Antwort. Du hast recht mit der BestellungsNr. Habe es mit einer zweiten Select Abfrage hinbekommen. Ich wollte eine Auflistung haben. Die Lösung:
SELECT BestellungsNr, SUM(Wert) AS Gesamtwert FROM(
SELECT BestellungsNr, Wert FROM (SELECT Bestellungen.BestellungsNr, (Preis * Menge) AS Wert FROM Bestellungen
INNER JOIN Bestellpositionen ON (Bestellungen.BestellungsNr = Bestellpositionen.BestellungsNr)
INNER JOIN Produkte ON (Bestellpositionen.ProduktNr = Produkte.ProduktNr) WHERE Bestellungen.BestellungsNr = Bestellpositionen.BestellungsNr AND Bestellpositionen.ProduktNr = Produkte.ProduktNr))GROUP BY BestellungsNr;
Vielen Dank für den Denkanstoß !
Gruß
So etwa?
select BestellungsNr, sum(Preis*Menge) as Gesamtwert from
Bestellpositionen as B inner join Produkte as P
on B.ProduktNr = P.ProduktNr
group by BestellungsNr
Gruß, Max.