2016-10-04 63 views
0

嘿我正在構建非常複雜的查詢,我不知道它計算複雜或不是,但因爲我是SQL新手這是非常複雜的發生數據庫錯誤錯誤編號:1066不是唯一的表/別名:

錯誤消息:

數據庫出錯 錯誤號碼:1066不是唯一的表/別名: 'BB'

SELECT cl.*, 
      (CASE 
       WHEN id_student IS NOT NULL THEN 'BOOKED' ELSE 
       (
        CASE 
        WHEN (max_count - student_count) > 0 THEN 'AVAILABLE' ELSE 'FULL' 
        END 
       ) 
      END) AS course_status   
     FROM ( 
       SELECT   aa.*, bb.id_student, cc.max_count, dd.student_count 
       FROM  (
            SELECT c.id_course, c.id_study, c.id_level, c.id_teacher, c.course_date, 
           s.study_name, 
           t.teacher_name, 
           t.teacher_picture 
           FROM tbl_course c 
           LEFT JOIN tbl_study s ON s.id_study = c.id_study 
           LEFT JOIN tbl_teacher t ON t.id_teacher = c.id_teacher 
           WHERE 
           CONCAT('"', REPLACE(c.id_level, ',', '","'), '"') LIKE '%"64"%' 
           AND c.id_study = '2' 
           AND c.course_date 
           AND c.id_study = '2'AND c.course_date 
            BETWEEN "2016-10-02 00:00:00" AND "2016-10-09 23:59:59" ORDER BY c.course_date ASC 
            ) aa 
       LEFT JOIN  (
             SELECT  id_student, id_course 
             FROM  tbl_course_student 
              WHERE id_student = '305' 
               AND id_study = '2' 
            ) bb ON aa.id_course = bb.id_course 
       LEFT JOIN  (
            SELECT SUM(student_count_max) AS max_count, course_date 
            FROM tbl_course 
            WHERE id_study = '2' 
             AND course_date BETWEEN "2016-10-02 00:00:00" AND "2016-10-09 23:59:59" 
               AND id_study = '2') bb ON bb.id_course = aa.id_course 
       LEFT JOIN  (
            SELECT SUM(student_count_max) AS max_count, course_date 
            FROM tbl_course 
            WHERE id_study = '2'AND course_date BETWEEN "2016-10-02 00:00:00" AND "2016-10-09 23:59:59" 
             AND CONCAT('"', REPLACE(id_level, ',', '","'), '"') LIKE '%"64"%' 
            GROUP BY course_date, id_study 
           ) cc ON aa.course_date = cc.course_date 
       LEFT JOIN  (
             SELECT SUM(student_count) AS student_count, course_date 
            FROM  tbl_course 
            WHERE id_study = '2' 
             AND course_date BETWEEN "2016-10-02 00:00:00" AND "2016-10-09 23:59:59" 
             AND CONCAT('"', REPLACE(id_level, ',', '","'), '"') LIKE '%"64"%' 
             AND course_date BETWEEN "2016-10-02 00:00:00" AND "2016-10-09 23:59:59" AND CONCAT('"', REPLACE(id_level, ',', '","'), '"') LIKE '%"64"%' 
            GROUP BY course_date, id_study 
            ) dd ON aa.course_date = dd.course_date 
     ) cl 
     GROUP BY course_date, course_status 

我的問題:WHE我做錯了嗎?我的意思是,我一直在閱讀這些查詢,但我什麼也沒找到。

回答

1

你有2次別名 'BB'

在你的第一個加入:

) bb ON aa.id_course = bb.id_course 
在你的第二個

,並在這裏加入:

AND id_study = '2') bb ON bb.id_course = aa.id_course 

您需要重命名這些1到另一個別名(並在您的使用場外正確映射)。

+0

非常感謝,我仍然需要解決它,使其工作 –

1

對兩個內部查詢使用bb別名。你不能這樣做。每個別名都必須是唯一的。

相關問題