与3个表相关的SQL计数项
我让sql语句为这两个表运行:tblStations和tblThreads,用于计算每个线程中的站数:与3个表相关的SQL计数项,sql,ms-access,count,Sql,Ms Access,Count,我让sql语句为这两个表运行:tblStations和tblThreads,用于计算每个线程中的站数: SELECT tblThreads.*, (SELECT COUNT(*) FROM tblStations WHERE tblStations .fldThreadID=tblThreads.fldID) AS TotalStationsInThread FROM tblThreads; 然后为系统中的每个线程显示tblThread.Name和TotalStationsInThread 现
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连接一样
关于如何计算连接到每个线程的所有用户的站点数量,请提供任何帮助???您需要在from子句中包含TBluser:
这是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的回答。不幸的是,这不起作用。它不接受括号中的陈述。@Atlantis。这是一个错误吗?如果是,错误是什么?这是错误:语法错误。在查询表达式“SELECT COUNT*FROM tblUsers JOIN tblStations ON tblStations.fldUserID=tblUsers.fldID WHERE tblUsers.fldThreadID=tblThreads.fldID”中,您使用的是什么SQL引擎?实际上,您应该使用正确的SQL引擎来标记问题。假设表名和字段名存在,我很确定语法是正确的。它可以这样工作:“SELECT tblThreads.*,SELECT COUNTtblStations.fldID FROM tblUsers LEFT OUTER JOIN tblStations ON tblStations.fldUserID=tblUsers.fldID WHERE tblUsers.fldthreaid=tblThreads.fldID AS totalstationsinthreads FROM tblThreads;”但这仅显示一个线程的TotalStationsInThread。
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;