0

我为这两个表运行了这个 sql 语句:tblStations 和 tblThreads,用于计算每个线程中的站数:

SELECT tblThreads.*, (SELECT COUNT(*) FROM tblStations WHERE tblStations .fldThreadID=tblThreads.fldID) AS TotalStationsInThread FROM tblThreads;

然后为系统中的每个线程显示 tblThread.Name 和 TotalStationsInThread。

现在我在这个层次结构中添加了另一个表(tblUsers):每个线程可以有很多用户,每个用户可以有很多站。这三个表通过以下方式相互关联:

tblStations.fldUserID=tblUsers.fldID > tblUsers.fldThreadID=tblThreads.fldID.

所以我将我的 SQL 查询更改为:

SELECT tblThreads.*, (SELECT COUNT(*) FROM tblStations WHERE tblStations.fldUserID=tblUsers.fldID AND tblUsers.fldThreadID=tblThreads.fldID) AS TotalStationsInThread FROM tblThreads;

但现在我收到这条消息:“没有为一个或多个必需参数提供值。” 这就像数据库无法通过 tblUsers 将表 tblStations 与 tblThreads 连接起来......

有关如何计算连接到连接到每个线程的所有用户的站数的任何帮助?

4

2 回答 2

1

这是 MS Access Jet 数据库引擎的正确答案:

SELECT tblThreads.*, (SELECT COUNT(tblStations.fldUserID) FROM tblStations INNER JOIN tblUsers ON tblStations.fldUserID = tblUsers.fldID WHERE  tblUsers.fldThreadID = tblThreads.fldID)  AS TotalStationsInThread FROM tblThreads;

非常感谢 Gordon Linoff 的回答。

于 2013-09-08T03:25:24.840 回答
0

您需要tblUsersfrom子句中包含:

SELECT tblThreads.*,
       (SELECT COUNT(*)
        FROM tblUsers inner join
             tblStations
             on tblStations.fldUserID = tblUsers.fldID
        WHERE tblUsers.fldThreadID = tblThreads.fldID
       ) AS TotalStationsInThread
FROM tblThreads;
于 2013-09-07T15:46:34.263 回答