2013-05-06 108 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形式收取的费用在另一家商店的账单代码

所有这些都是简单的选择或交叉表查询,从第一个查询连接到第二个查询。

相关问题