2013-05-06 160 views
0

我在互聯網上搜索了一個解決方案,並絞盡腦汁地試圖找出答案,希望有人可以提供幫助。這是基本情況。在另一個查詢中使用Access查詢的結果。

我有一個表中的交易列表。每筆交易都包含客戶ID,商店ID,他們購買的產品以及帳單代碼(即2,3,4,5,6,7)的字段

某些商店未使用帳單代碼2我想進一步調查這一點。

我創建了一個不使用帳單代碼2的商店列表。有20家商店。

然後我創建了一個查詢,給了我一個與這20家商店關聯的客戶列表。

-------------------這是我現在-----------

基本上,我想看看如果他們去商店X併購買產品Y,他們在兩個不同的商店中被區別對待(賬單代碼)。如果商店沒有使用帳單代碼2,那麼他們有更多的錢,所以他們不會使用這些代碼。

有沒有辦法做一個查詢,告訴Access給我使用這20家商店和另一家商店(而不是20家)的客戶,他們是否在其他地方購買了同樣的產品?

任何幫助將不勝感激。我有一種感覺,我需要簡化這一點,並採取多個步驟,但我似乎無法找到從A點到B點的路徑。謝謝。

+0

你能告訴我們你的代碼嗎? – Raptor 2013-05-06 06:48:58

+0

以及您的桌子。這可能是你需要的一對夫婦或查詢,也可能是一個簡單的連接。 – Eddie 2013-05-06 11:03:10

回答

0

好了,所以,它聽起來就像你有一個查詢發現,不使用存儲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 ... 
0

我會通過

1解決這個問題 - 使用查詢來獲得所有已由任何商店收費的所有產品的帳單代碼爲2 - 僅限產品代碼,沒有其他信息

2 - 將交易錶鏈接到步驟1中的查詢,並列出產品,客戶,商店和帳單代碼 - 可能在與產品,客戶的交叉表查詢中存儲並且在頂部

計費代碼

3 - 視覺掃描這個輸出地看到,不使用的計費代碼爲2店 - 這應該回答你的問題或告訴你,如果更多的研究需要

或者,你可以在步驟2中使用選擇查詢併爲帳單代碼<> 2添加條件 - 自從您開始使用任何位置的代碼2開賬單後,此查詢會告訴您(商店,產品,客戶)那些不使用的商店代碼2當另一個商店對同一產品使用代碼2時

另一種替代方法是,如果這必須是客戶特定的 - 在查詢1中,獲取客戶/產品組合爲所有代碼2帳單代碼。然後將其與客戶和產品的交易表相關聯,條款代碼爲<> 2.這與上述邏輯相同 - 但會列出(客戶,產品)組合在一個商店中以代碼2形式收取的費用在另一家商店的賬單代碼

所有這些都是簡單的選擇或交叉表查詢,從第一個查詢連接到第二個查詢。

相關問題