我有兩個表。一個由客戶和另一個由產品,他們已經購買:選擇所有客戶,除非他們有其他產品 - SQL
表客戶
CustID, Name
1, Tom
2, Lisa
3, Fred
表產品
CustID, Item
1, Toaster
1, Breadbox
2, Toaster
3, Toaster
我想獲得所有買了一個烤麪包機的客戶,除非他們還買了一個麪包箱。
所以我曾嘗試以下:
SELECT * FROM Customer
JOIN Product
ON Customer.CustID=Product.CustID
WHERE Product in
(SELECT
Item
FROM Product
WHERE (Item = 'Toaster' AND Item != 'Breadbox'));
和:
SELECT * FROM Customer
INNER Join Product
ON Customer.CustID=PRODUCT.CustID
WHERE Product.Item = 'Toaster'
AND Product.Item NOT IN ('Breadbox');
但都給出了相同的結果,其中包括湯姆,這不已經擁有一個麪包盒。
我該如何確保只有擁有烤麪包機但不擁有面包箱的客戶才能上市?
如果可能的話,此查詢將返回沒有產品的客戶,因此在我看來您想要內連接。如果可能有多個烤麪包機,這也會多次列出客戶。 – shawnt00
我試過查詢,它的工作正確,你能舉個例子嗎? @ shawnt00 – wajeeh
我的不好。我誤解了「where」作爲連接條件的一部分。但是,你真的不如寫'內部連接',因爲這就是你會得到的。 – shawnt00