SQL - 如何隐藏重复ID

时间:2014-06-05 09:53:13

标签: mysql sql join

我有3张桌子:

enter image description here

我需要选择课程中的所有学生而不是课程,但不要重复学生。 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)

2 个答案:

答案 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