簡體   English   中英

SQL子查詢

[英]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.

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