簡體   English   中英

與3個表相關的SQL COUNT個條目

[英]SQL COUNT entries related to 3 tables

我為這兩個表運行了此sql語句:tblStations和tblThreads,用於計算每個線程中Station的數量:

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將表tblStation與tblThreads連接起來...

關於如何計算與每個線程連接的所有用戶連接的站數,有任何幫助嗎?

這是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的回答。

您需要在from子句中包含tblUsers

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM