你好我試圖運行一個特定的查詢爲我的最後一年的項目,我想找出在2014年本科生學習計算機科學的數量& 2016.我的表使用課程註冊&課程來記錄註冊在計算機科學課程的學生人數。使用自我加入和計數的SQL查詢問題
我的幫助我的上司,他建議我使用上courseEnrollments自聯接只是使其更容易找到入選2014年& 2016年學生相同的CS招生下面的查詢顯示了你我是怎麼寫的:
SELECT COUNT(*)
FROM courseEnrollment
WHERE StudentID IN
(SELECT X.StudentID
FROM courseEnrollment Y
JOIN courseEnrollment X
ON Y.courseID = X.courseID
JOIN courses C
ON Y.courseID = C.courseID
WHERE C.courseName = 'Computer Science'
AND X.StartAcademicYear = 2014
AND Y.StartAcademicYear = 2016);
當我跑了它在MySQL上,我得到錯誤的結果(這是4不是6),因爲它只能算作學生在2014年&不是2016年的計算機科學招收請告訴我,我怎麼能解決這個問題。謝謝!
P.S.我只在內部查詢中添加了「X.StudentID」,以防止MySQL與StudentID屬性混淆。將其更改爲「Y.StudentID」給了我2.同樣,我想知道爲什麼它不計算所有這6名學生( 2註冊於2016年& 4註冊於2014年)註冊在計算機科學。
也許你應該確保,從X和學生是學生從Y是同一個人。 – michaJlS
怎麼樣?內部聯接不是爲我做的嗎? – Magan
你有2014年**和** 2016入學的學生嗎? –