【发布时间】:2020-01-02 22:27:55
【问题描述】:
我对 Access 数据库中的查询有疑问。该数据库将用于存储和管理体育联赛的基本统计数据。 这是我的查询字符串:
SELECT Participants.Name AS Name
, Count(Games.Participants) AS NumberOfGames
, (
SELECT Name
, Count(Games.Winner)
FROM Participants
INNER JOIN Games
ON Participants.ID = Games.Winner
WHERE Participants.ID = Games.Winner
) AS Won
FROM Participants
INNER JOIN Games
ON Participants.ID = Games.Participants.Value
GROUP BY Participants.Name
ORDER BY Participants.Name;
由于某种原因,子查询返回所有记录的数量,而不仅仅是获胜者 ID 与参与者 ID 匹配的记录,我不知道为什么。子查询的内容不在子查询中时有效。当我在子查询的 WHERE 子句中明确声明参与者的 ID 时,它会返回该 ID 的正确值。但我无法让它按照我需要的方式工作。
【问题讨论】:
-
样本数据和期望的结果会有所帮助。您的查询毫无意义,不会在 MS Access(或任何其他数据库)中运行。
-
您的子查询
WHERE没有意义。您有一个与Participants.ID = Games.Winner上的两个表匹配的JOIN,它返回两个值匹配的所有行,然后是一个WHERE Participants.ID = Games.Winner,它再次返回两个值匹配的所有行。我不认为那是你想要的。为了提供帮助,您需要样本数据和您希望从该数据中获得的输出。 -
@KenWhite 我的问题是无论我如何
JOIN或我如何陈述WHERE子句,它总是返回 Games 表中的每条记录。 -
正如我所说,如果没有样本数据和输出,我们将无法为您提供帮助。您尚未提供必要的信息。使用一个无用的 WHERE 子句来模仿 JOIN 已经做了什么不会成为一个解决方案。