2017-04-17 2 views
0

Ich arbeite an einer Coffee Shop-Datenbank und versuche, die Anzahl der Verkäufe pro Artikel zu finden. Die Nummer wird korrekt angezeigt, aber anstatt den Namen des Kaffees und des Verkaufs anzuzeigen, werden alle Kaffeebezeichnungen mit den korrekten Daten des ersten Getränks angezeigt, dann alle Kaffeebezeichnungen mit den korrekten Daten des zweiten Getränks.SQL Anzeige der richtigen Nummer, Namen

select p.ProductName, TotalSold = SUM(o.Quantity) 
From MSProducts p, MSOrderline o 
Group By p.ProductName, o.ProductID 

enter image description here

Ausgabe sein sollte ... 1 FlavoredSyrup-Shot 11 2 ExtraExpresso 7 3. Americano-Small 5

Obwohl es nicht auf der Seite passte es weiter mit der Menge 5 unten.

+3

* Niemals * Kommas in der 'FROM'-Klausel. * Verwenden Sie immer die richtige explizite 'JOIN'-Syntax. –

+0

Bitte zeigen Sie Beispieltabellendaten, erwartete Ausgabe und was Sie als Ausgabe erhalten. – OldProgrammer

+0

Sie können nur nach 1 Spalte gruppieren, Sie haben 2 Spalte –

Antwort

2

Ich denke, die fehlende Join-Bedingung war die Ursache der Datenduplizierung. Dies funktioniert möglicherweise, vorausgesetzt, Sie haben ProductID in beiden Tabellen.

select p.ProductName, SUM(o.Quantity) as TotalSold 
From MSProducts p 
inner join MSOrderline o 
on p.ProductID = o.ProductID 
Group By p.ProductName 
+0

Das hat funktioniert, wir haben nie innere Joins im Unterricht gelernt. Gibt es einen Weg um die innere Verbindung? – DataStructors23

+0

Haben Sie in der Klasse von 'Where-Klauseln' erfahren? –

+0

@ DataStructors23 Nein, Sie werden immer entweder einen inneren Join, einen linken oder einen rechten Outer Join oder einen Cross Join ausführen. Es ist am besten, explizit anzugeben, welche Art von Join Sie möchten. Wenn Sie Kommas verwendet haben, aber nicht die beiden Felder angegeben haben, an denen Sie teilgenommen haben, haben Sie eine Kreuzverbindung, denke ich. –

1

Sie müssen beide Tabellen korrekt zuordnen.

MSProducts p, MSOrderline o 

Wenn Sie nicht zuordnen, werden alle Zeilen der ersten Tabelle mit allen Zeilen der zweiten Tabelle zugeordnet. Bitte mappen Sie es mit der gemeinsamen Spalte

Verwandte Themen