Ich habe drei Tabellen. Eine besteht aus Kunden, eine besteht aus Produkten, die sie gekauft haben, und die letzten die Rückkehr sie getan hat:Filter auf der zweiten linken Join - SQL
Tabelle Kunde
CustID, Name
1, Tom
2, Lisa
3, Fred
Tabelle Produkt
CustID, Item
1, Toaster
1, Breadbox
2, Toaster
3, Toaster
Tabelle Kosten
CustID, Date, Reason
1, 2014, Guarantee
2, 2013, Guarantee
2, 2014, Guarantee
3, 2015, Guarantee
Ich möchte alle Kunden erhalten, die einen Toaster gekauft haben, es sei denn sie Ich habe auch eine Brotbox gekauft, aber nicht, wenn sie ein Produkt mehr als einmal zurückgegeben haben.
Also habe ich versucht, die folgenden:
SELECT * FROM Customer
LEFT JOIN Product ON Customer.CustID=Product.CustID
LEFT JOIN Returns ON Customer.CustID=Returns.CustID
WHERE Item = 'Toaster'
AND Customer.CustID NOT IN (
Select CustID FROM Product Where Item = 'Breadbox'
)
Das bin ich diejenigen gibt, die einen Toaster aber keine breadbox gekauft haben. Daher Lisa und Fred.
Aber ich verdächtige Lisa, die Produkte absichtlich zu brechen, also möchte ich jene nicht einschließen, die ein Produkt mehr als einmal zurückgegeben haben. Also, was füge ich der Aussage hinzu, um nur Freds Informationen zu erhalten?
Ich denke, man diese Frage gestern gefragt. Siehe hier -> http://stackoverflow.com/questions/36293041/select-all-customers-except-if-the-have-another-product-sql –
@SatwikNadkarny Ist das gleiche, aber jetzt fügt er die Rückkehr Bedingung –