我必須過濾沒有特定產品的訂單。如何用MySQL過濾正確的訂單(一個訂單包含多行)
這很簡單,但問題是,每個訂單可能有很多行,包含不同的產品。
這是我的數據的一個示例:
ID | Product | Customer | Quantidy | Date
1 | Apple | Alex Sorensen | 3 | 17.4.2009
2 | Orange | Alex Sorensen | 1 | 17.4.2009
3 | Lime | Alex Sorensen | 4 | 17.4.2009
4 | Apple | Fred Jonsson | 1 | 30.5.2010
5 | Lime | Fred Jonsson | 7 | 30.5.2010
ect...
線具有相同date
和相同customer
都爲相同的順序。
如何查找所有訂單中沒有(例如)Orange
的訂單?
我自己的(不工作)的MySQL代碼:
SELECT o.ID, k.Customer, o.Quantidy, p.Product, o.Date
FROM Products p, Orders o, Customers c
WHERE p.ID = o.ID
AND k.Customer = o.Customer
AND p.Product NOT IN ('Orange')
GROUP BY o.Date
ORDER BY o.ID DESC
的問題是,即使我不想「亞歷克斯索倫森的」命令,因爲它包含橘子,我得到他其他線路沒有包含「橙色」的線路。
我需要一個SQL代碼才能給我「Fred Jonsson」和其他訂單,它們沒有訂單中的桔子。
我有麻煩理解你的模型。你在'p.id = o.id'上加入'products'。這是否意味着你有'id = 1'的蘋果,另一個'id = 4'? – 2010-06-28 09:33:04
「p.ID = o.ID」是個錯誤,應該是「p.Product = o.Product」。我翻譯並簡化了其他語言的代碼,這種方式非常糟糕。 – jsk 2010-06-28 10:04:43
你的'p.Product = o.Product'是你選擇的相同的'p.Product'嗎(它實際上是否說'Orange'或者它是'Orange'的ID嗎? – 2010-06-28 10:36:25