好了,所以,它聽起來就像你有一個查詢發現,不使用存儲billingCode = 2
SELECT DISTINCT storeID
FROM tblPurchases
WHERE storeID NOT IN (SELECT storeID FROM tblPurchases WHERE billingCode=2);
我保存的查詢在Access中爲[qryStoresNotUsing2]這樣我就可以在下面使用它。
它還聽起來像你已經利用這第一次查詢,給你的客戶名單誰在這些商店購物,這可能與東西可以做這樣
SELECT DISTINCT clientID
FROM tblPurchases
WHERE storeID IN (SELECT storeID FROM qryStoresNotUsing2);
現在,這聽起來像你想有些客戶在其中一家「非2」店購買產品並在其他地方購買同一產品的細節。
我們可以通過生成所有購買的列表,其中相同的客戶端購買同樣的產品在不同門店開始:
SELECT DISTINCT p1.clientID, p1.productID,
p1.storeID AS store1, p1.billingCode AS billingCode1,
p2.storeID AS store2, p2.billingCode AS billingCode2
FROM tblPurchases p1 INNER JOIN tblPurchases p2
ON p1.clientID=p2.clientID AND p1.productID=p2.productID AND p1.storeID<>p2.storeID
注意,ON
子句中的前兩個條件保證客戶端和產品是相同的,第三個條件確保商店不同。
另請注意,「不等於」自連接會產生多個對稱結果:您將獲得「Store_X,Store_Y」的一行和「Store_Y,Store_X」的另一行。沒關係,因爲現在我們要做的就是將這些結果限制在其中一個商店位於「非2」列表中,因此我們只需要在其中存在匹配的那些商店加入(p1
)通過簡單地增加一個WHERE
子句上面的查詢:
SELECT DISTINCT p1.clientID, p1.productID,
p1.storeID AS store1, p1.billingCode AS billingCode1,
p2.storeID AS store2, p2.billingCode AS billingCode2
FROM tblPurchases p1 INNER JOIN tblPurchases p2
ON p1.clientID=p2.clientID AND p1.productID=p2.productID AND p1.storeID<>p2.storeID
WHERE p1.storeID IN (SELECT storeID FROM qryStoresNotUsing2);
該查詢將列出個人購買。如果你想只是客戶端就可以省略從輸出產品ID,STOREID和billingCode列,只是做
SELECT DISTINCT p1.clientID FROM ...
你能告訴我們你的代碼嗎? – Raptor 2013-05-06 06:48:58
以及您的桌子。這可能是你需要的一對夫婦或查詢,也可能是一個簡單的連接。 – Eddie 2013-05-06 11:03:10