坚持一些编码。我必须展示参加某一课程的IT学生。 所以这是我的代码到目前为止,它显示了IT学生的名字,但是当它们显示他们注册的课程时,它会显示每一门课程。
SELECT DISTINCT s.sid, s.sname, e.ccode
FROM student s, enrolled e
WHERE s.programme = 'IT';
我认为它与WHERE s.programme ='IT'行有关,它没有连接到e.ccode,我该怎么做?
答案 0 :(得分:2)
这是一个交叉连接,你需要有一些连接条件来过滤结果。其他明智的学生将加入每一行注册表。
SELECT DISTINCT s.sid, s.sname, e.ccode
FROM student s INNER JOIN enrolled e on s.sid = e.sid
WHERE s.programme = 'IT';
假设已登记的表具有学生ID。
答案 1 :(得分:0)
SELECT DISTINCT s.sid, s.sname, e.ccode
FROM student s INNER JOIN enrolled e on s.sid = e.sid
WHERE s.programme = 'IT';//use inner join
实际上,DISTINCT并没有将自己限制在1列,基本上当你说:
时SELECT DISTINCT a, b
你所说的是,“给我一个明显的a和b组合值”......就像一个多列的UNIQUE索引