2016-05-13 11 views
1

Ich versuche, alle Zeilen aus 3 Tabellen anzuzeigen.MySQL: alle Zeilen aus 3 Tabellen angezeigt

Ich muss die vollständige Kundenliste anzeigen. Jeder Kunde kann 0, 1 oder mehr Einreichungen haben. Jede Einreichung kann 0,1 oder mehr Produkte haben.

CustomerID | submissionID | submissionProductID 
001  | s001   | sp001 
001  | s002   | sp002 
002  | s003   | sp003  
002  | s003   | sp004  
002  | s003   | sp005 
003  | ---   | --- 
004  | s005   | --- 

so:

customer 1 has 2 submissions, 1 product in each. 
customer 2 has 1 submission containing 3 products. 
customer 3 has no submission. 
customer 4 has 1 submission but no pruducts. 

Ich kann nicht alle Datensätze anzuzeigen scheinen. Die folgende SQL zeigt alle Kunden an, jedoch nicht mehrere Submisison-Reihen oder mehrere Produktreihen.

Und natürlich, einige Kunden haben eine leere Einreichung und Produkt. Und einige Kundeneinreichungen haben kein Produkt.

SELECT c.CustomerID as 'CustID', s.submissionID, sp.submissionProductID 
FROM tblCustomer c 
LEFT JOIN tblSubmission s on c.CustomerID = s.customerID 
LEFT JOIN tblSubmissionProducts sp on s.submissionID = sp.submissionID 
GROUP BY c.CustomerID 
ORDER BY c.CustomerID; 

Jede Hilfe wird geschätzt. Danke.

+5

durch Klausel Ihre Gruppe entfernen, verwenden Sie es nicht, wenn Sie die von Klausel eine Gruppe erfordert keine Aggregatfunktion haben. –

+0

Das hat den Trick, denke ich. Testen Sie die Ausgabe erneut. – nads

Antwort

3

Wenn Sie wollen einfach nur alle Datensätze erhalten, versuchen Sie bitte diese;)

SELECT c.CustomerID as 'CustID', s.submissionID, sp.submissionProductID 
FROM tblCustomer c 
LEFT JOIN tblSubmission s on c.CustomerID = s.customerID 
LEFT JOIN tblSubmissionProducts sp on s.submissionID = sp.submissionID 
ORDER BY c.CustomerID; 
+0

Ja. das funktioniert. Ich hatte das vorher versucht, aber es hat nicht funktioniert. Nicht sicher warum. Arbeite jetzt. Danke Dr. Stitch und Reno. – nads

Verwandte Themen