[英]SQL sub queries
我需要為(用戶)在(課程)中獲得(完成模塊的數量)和(課程模塊的數量)
表:
course_modules - will have all the course modules
course_modules_completion - will have all the users with completed modules.
我想在一個查詢中顯示所有三個示例,例如:
(course) (count of course modules) (count of completed modules) (userid)
3 20 5 12
5 20 8 7
這是我嘗試的查詢:
SELECT
c.fullname, count(cm.id) AS "coursemodules", cmc.userid,
(SELECT count(cmc.coursemoduleid)
FROM mdl_course c
JOIN mdl_course_modules cm
JOIN mdl_modules m
JOIN mdl_course_modules_completion cmc ON c.id = cm.course
AND cm.module = m.id
AND cmc.coursemoduleid = cm.id
AND cmc.userid = 12
AND cm.course = 7
AND cmc.completionstate BETWEEN 1 AND 10) AS "completedmodules"
FROM
mdl_course c
JOIN mdl_course_modules cm
JOIN mdl_modules m
ON c.id = cm.course AND cm.module = m.id AND cm.course = 7
它顯示一個錯誤:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT count(cmc.coursemoduleid) FROM mdl_course c JOIN mdl_course_modules cm JO' at line 3
有人可以建議我嗎?
Data for course_modules
id course moduletypeid
1 3 9
2 3 9
3 3 17
4 5 20
5 5 18
Data for course_modules_completion
id coursemoduleid userid
1 153 12
2 154 12
3 155 11
4 120 12
5 167 11
應該
FROM mdl_course c
JOIN mdl_course_modules cm ON c.id = cm.course
JOIN mdl_modules m ON cm.module = m.id
JOIN mdl_course_modules_completion cmc ON
cmc.coursemoduleid = cm.id
WHERE
AND cmc.userid = 12
AND cm.course = 7
AND cmc.completionstate BETWEEN 1 AND 10
UPDATE
您可以嘗試擺脫SELECT中的子查詢,並將其替換為
SUM(if (cmc.completionstate BETWEEN 1 AND 10,1,0) AS "completedmodules"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.