0

我已经在互联网上搜索了一个解决方案,并绞尽脑汁试图解决这个问题,希望有人能提供帮助。这是基本情况。

我在表中有一个交易列表。每笔交易都有客户 ID、商店 ID、他们购买的产品和账单代码(2、3、4、5、6、7)字段

有些商店根本不使用帐单代码 2,我想进一步调查。

我创建了一个不使用帐单代码 2 的商店列表。有 20 家商店。

然后,我创建了一个查询,它为我提供了与这 20 家商店相关的客户列表。

-------这就是我现在的位置---------

基本上我想看看人们是否去商店 X 并购买产品 Y,他们在两个不同的商店中是否受到不同的待遇(计费代码)。如果他们不使用计费代码 2,商店会有更多的钱,所以他们是不使用此代码的动机。

有没有办法进行查询并告诉 Access 给我使用这 20 家商店和另一家商店(不是 20 家商店)的客户,他们是否在其他地方购买了相同的产品?

任何帮助将不胜感激。我有一种感觉,我需要简化这一点并采取多个步骤,但我似乎无法找到从 A 点到 B 点的路径。谢谢。

4

2 回答 2

1

好的,听起来您有一个查询来查找不使用 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);

该查询将列出个人购买。如果您想要客户端,您可以从输出中省略 productID、storeID 和 billingCode 列,然后执行

SELECT DISTINCT p1.clientID FROM ...
于 2013-05-06T11:14:15.993 回答
0

我会解决这个问题

1 - 使用查询获取已由任何商店使用计费代码计费的所有产品的列表 2 - 仅产品代码,没有其他信息

2 - 将交易表链接到第 1 步中的查询,并列出产品、客户、商店和计费代码 - 可能在交叉表查询中,产品、客户和商店向下,计费代码横跨顶部

3 - 目视扫描此输出以查看不使用帐单代码的商店 2 - 这应该回答您的问题或告诉您是否需要进行更多调查

或者,您可以在第 2 步中使用选择查询并为计费代码 <> 2 添加条件 - 因为您从任何地方使用代码 2 计费的所有产品开始,此查询将告诉您(商店、产品、客户)那些商店当另一家商店对同一产品使用代码 2 时,没有使用代码 2

另一种选择,如果这必须是客户特定的 - 在查询 1 中,获取所有代码 2 账单代码的客户/产品组合。然后将其链接到客户和产品的交易表,条件为账单代码 <> 2。这与上面的逻辑相同 - 但将在一个商店和其他一些商店中列出以代码 2 计费的(客户、产品)组合另一家商店的账单代码

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

于 2013-05-06T14:07:02.727 回答