我想查詢3個表:MySQL的多連接與重複計數
classroom
:
id | name
----------------
1 | bob's class
student_enrollment
:
studentId | classroomId
-----------------------
1 | 1
student_progress
:
studentId | dateTime
---------------------
1 | 2014-08-15 09:33:23
,我試圖用結果如結束:
classroomName | studentId | days
------------------------------------------
Bob's class | 1 | 112
哪裏days
是天的不同數目的特定學生有dateTime
條目。
SELECT classroom.name, student_enrollment.studentId, student_progress.dateTime
FROM classroom
JOIN student_enrollment ON student_enrollment.classroomId = classroom.id
JOIN student_progress ON student_progress.studentId = student_enrollment.studentId
WHERE `dateTime` >= '2014-08-01 09:00:34'
ORDER BY classroom.name
給我一張表,每個學生每dateTime
條目。我試圖給查詢添加一個計數的任何方式,最多隻能給我一個結果,只有一個學生和不同的dateTime
天的總數。
SELECT classroom.name, student_enrollment.studentId, COUNT(DISTINCT YEAR(student_progress.dateTime),MONTH(student_progress.dateTime),DAY(student_progress.dateTime)) AS days
FROM classroom
JOIN student_enrollment ON student_enrollment.classroomId = classroom.id
JOIN student_progress ON student_progress.studentId = student_enrollment.studentId
WHERE `dateTime` >= '2014-08-01 09:00:34'
ORDER BY classroom.name
我已經試過移動計數的子查詢的結合部,以及各種其他的東西,但剛剛結束了錯誤,如unknown table student_progress
,只是似乎無法降落到正確的方法將查詢放在一起,以獲得每個studentId
的dateTime
條目的不同計數。
您想要考慮的複雜因素* days *而不僅僅是唯一的'dateTime'值? – Madbreaks
複雜的是,我剛剛在1個教室找到1個學生的結果,其中'天'是所有不同日期時間的天數,而不是每個特定學生的不同天數。我猜是因爲我在SELECT中有student_enrollment.studentId而不是student_progress.studentId。 – soisystems