需要了解 SQL 代码中的 COUNT() 和多个 LEFT JOIN 错误

Need to understand COUNT() and multiple LEFT JOIN error in SQL code

我很茫然。这是我的代码。我正在尝试将三个计数加入 RequestID。我可以让它们单独工作(一个连接),但是将所有三个都放在 table 中会给我带来重复错误,其中与 RequestID 关联的行数比单个 tables 中的行数更多。我一直在阅读各种帖子,但我还没有看到曙光。我知道导致添加信息的排列或连接顺序有问题。我正在做一个左连接,所以我可以捕获 0。请帮忙。谢谢。

SELECT RTable.RequestID, 
Count(sSentRequest.FileName) AS SentRequest, 
Count(sReceivedArticle.FileName) AS ReceivedArticle, 
Count(sMessages.FileName) AS Messages
FROM ((RTable 
LEFT JOIN sReceivedArticle ON RTable.RequestID =     
sReceivedArticle.FolderRQ) 
LEFT JOIN sSentRequest ON RTable.RequestID = 
sSentRequest.FolderRQ) 
LEFT JOIN sMessages ON RTable.RequestID = sMessages.FolderRQ
GROUP BY RTable.RequestID;

LEFT JOIN 不捕获 0。它从左侧 table 中获取所有行,并在右侧 table 中查找匹配的行。如果找不到它们,它会 returns NULL(不同于 0)。

试试这个:

SELECT RTable.RequestID, 
(SELECT COUNT(FileName) FROM sSentRequest WHERE FolderRQ = RTable.RequestID) AS SentRequest,
(SELECT COUNT(FileName) FROM sReceivedArticle WHERE FolderRQ = RTable.RequestID) AS ReceivedArticle,
(SELECT COUNT(FileName) FROM sMessages WHERE FolderRQ = RTable.RequestID) AS Messages
FROM RTable

下面是另一种可能性:

SELECT RTable.RequestID 
, COUNT(Nz(sSentRequest.FileName, 0)) AS SRCount 
, COUNT(Nz(sReceivedArticle.FileName, 0)) AS RACount 
, COUNT(Nz(sMessages.FileName, 0)) AS MsgCount 
FROM RTable 
  LEFT JOIN sSentRequest ON sSentRequest.FolderRQ = RTable.RequestID 
  LEFT JOIN sReceivedArticle ON sReceivedArticle.FolderRQ = RTable.RequestID 
  LEFT JOIN sMessages ON sMessages.FolderRQ = RTable.RequestID 
GROUP BY RTable.RequestID