感謝advnace閱讀此內容。我不太擅長SQL,所以請原諒任何愚蠢的錯誤...SQL查詢和COUNT的困難
這是交易,我有四個表(我只打算給基本領域,和表之間的依賴關係,爲了的簡單性):
- 公司:companyId,公司名稱
- 用戶:用戶id,用戶名
- 項目:專案編號,projectUserId,projectCompanyId,projectDate
- 研究:studyProjectId
的依賴就像這樣:
- 項目是爲客戶(projectUserId),並通過公司開展(projectCompanyId)
- 有沒有可以在同一個項目很多研究,但每個研究對於一個項目(studyProjectId)
這裏是我想寫的要求的那種,但它目前不工作:
SELECT
project.projectId,
company.companyName,
user.userName,
COUNT(study.studyId) AS numberStudies
FROM project, company, user, study
WHERE company.companyId = project.projectCompanyId,
AND user.userId = project.projectUserId,
AND study.studyProjectId = project.projectId
ORDER BY company.companyId, user.userId, project.projectDate;
它返回一個numberStudies等於研究總數的記錄。如果我從SELECT
刪除COUNT
,然後我得到的結果我想要的類型,但沒有列numberStudies
(當然)。希望你明白我想要得到什麼,我在這裏做錯了什麼?再次
感謝提前:)
編輯:如果可能的話,我想顯示記錄,即使numberStudies
爲0
添加'GROUP BY company.companyName,user.userId,project.projectId'了'WHERE'之後,'ORDER BY'之前。 –
@ypercube好的,現在真是太棒了! :)你能解釋我爲什麼我需要'GROUP BY',我真的想明白我的錯誤。 – Sheljohn
@ Sh3ljohn計數是一個聚合函數。它們通常只在通過一些(或全部)列進行分組時才與其他列一起工作。請閱讀:[MySQL Aggregate Functions](http://www.mysqltutorial.org/mysql-aggregate-functions.aspx)。 – Marian