繁体   English   中英

Access上的内部联接SQL

[英]Inner Join SQL on Access

我似乎无法理解这一点,并最终决定寻求帮助。 因此,我们需要找到在Store 25和Store 50购物至少10次的人的客户ID列表。

首先,我创建了代码以创建一个表,该表包含客户ID列表以及他们在该商店购物的次数计数。 原始交易数据针对每笔交易(针对所购买的每件商品)都有多行,因此具有distinctTransactions表。

然后,我尝试在CustomerID上内部加入两个shop表,并输入> 9个条件。

我收到错误消息“指定的字段'CustomerID'可能引用您的SQL语句的FROM子句中列出的多个表。” 对我而言,这没有意义,因为我在CustomerID下加入了两个表。

如果有人能解释出哪里出了问题以及正确答案背后的逻辑,我将不胜感激! 另外,如果这段代码很接近,我是否需要两个单独的distinctTransactions表(请注意,第二个表我只是为了使它使用不同的名称而创建了distinctTransactionsc)?

SELECT CustomerID, Store25.ShopCount AS 25, Store50.ShopCount AS 50
FROM (SELECT CustomerID, COUNT(distinctTransactions.TransactionID) AS ShopCount
     FROM (SELECT DISTINCT TransactionID, CustomerID, StoreID 
         FROM TransactionT) AS distinctTransactions
         WHERE StoreID = 25
         GROUP BY CustomerID) AS Store25
INNER JOIN
    (SELECT CustomerID, COUNT(distinctTransactionsc.TransactionID) AS ShopCount
    FROM (SELECT DISTINCT TransactionID, CustomerID, StoreID 
        FROM TransactionT) AS distinctTransactionsc
        WHERE StoreID = 50
        GROUP BY CustomerID) AS Store50
    ON Store25.CustomerID = Store50.CustomerID
WHERE Store25.ShopCount > 9
AND Store50.ShopCount > 9
ORDER BY CustomerID

即使您在公用列名上连接表,也必须从表中精确找出必须在ORDER BYSELECT CustomerID

您可以编写store25.CustomerIDstore50.CustomerID ,使用inner join store50.CustomerID在查询中没有区别。

整个事情听起来对我来说有点不对,您知道吗? 为什么不简单使用Group By count,customerId和store,那么您实际上可以使用提到的条件添加“ HAVING”,即“ counting(*)> 9”。

或者我没有赶上什么。

最好的祝福

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM