我有3张桌子:
我需要选择课程中的所有学生而不是课程,但不要重复学生。 E.g:
我需要所有学生的课程c_id = 1
应该显示:
s_id:1,2,3,4,5,6,7,8,..,全部
c_id:1,null,1,null,null,..,all
如果我需要所有学生的课程c_id = 2
应该显示:
s_id:1,2,3,4,5,6,7,8,..,全部
c_id:2,2,null,null,null,..,all
或者任何想法如何在课程中展示所有学生而不是在课程中?
我试试看:
SELECT st.*, co.`c_id` FROM `student` st
LEFT JOIN `t_stud_cour` co ON st.`s_id` = co.`s_id`
但是,显示所有stundent(ok)并重复学生(x)
答案 0 :(得分:1)
你只需要一个左连接,"课程编号" (c_id)左连接的ON子句中的条件
select s.s_id, sc.c_id
from student s
left join stu_cour sc on sc.s_id = s.s_id and sc.c_id = 1
如果一个学生可以在同一个课程上两次,你只需要一个独特的(我怀疑这可能发生:例如,这意味着你将在stud_cour中有两次(1,1)表)。
请参阅sqlfiddle,其中c_id = 1和c_id = 2
的示例答案 1 :(得分:0)
SELECT distinct s.s_id, C.c_id, * FROM Student S
LEFT OUTER JOIN Stud_Cour STC ON S.s_id = STC.s_id
LEFT OUTER JOIN Course C ON STC.c_id = C.c_id