求一SQL语句

red_berries 2007-12-10 03:38:55
学生表
id:学号 name:姓名
选课表:
id:课程号 sid:学号(与学生表中id外键关联)

求一语句找出所有的选同一课程的学生对姓名(不能有重复的,也不能出现A,B B,A 这样的学生对),谢谢了
...全文
75 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
red_berries 2007-12-10
  • 打赏
  • 举报
回复
好了,原来 distinct不用加括号的。。。。还有字条串也能用< >  谢谢你了
dawugui 2007-12-10
  • 打赏
  • 举报
回复
select distinct t1.name , t2.name from
(select a.name , b.id from 学生表 a , 选课表 b where a.id = b.sid ) t1,
(select a.name , b.id from 学生表 a , 选课表 b where a.id = b.sid ) t2
where t1.id = t2.id and t1.name < t2.name
order by t1.id , t1.name , t2.name
red_berries 2007-12-10
  • 打赏
  • 举报
回复
还有点小问题,就是
学生 A B 选了 a,学生 A B 也选了 b
这时会打出
A B
A B
单项可以加distinct 两个怎么加啊?
dawugui 2007-12-10
  • 打赏
  • 举报
回复
--加个order by
select t1.name , t2.name from
(select a.name , b.id from 学生表 a , 选课表 b where a.id = b.sid ) t1,
(select a.name , b.id from 学生表 a , 选课表 b where a.id = b.sid ) t2
where t1.id = t2.id and t1.name < t2.name
order by t1.id , t1.name , t2.name
red_berries 2007-12-10
  • 打赏
  • 举报
回复
我试试啊,这不是原题,不过是这个意思,我按你的修改一下看对不
dawugui 2007-12-10
  • 打赏
  • 举报
回复

--如果A,B和B,A算重复的话,不要,就用t1.name < t2.name
select t1.name , t2.name from
(select a.name , b.id from 学生表 a , 选课表 b where a.id = b.sid ) t1,
(select a.name , b.id from 学生表 a , 选课表 b where a.id = b.sid ) t2
where t1.id = t2.id and t1.name < t2.name
red_berries 2007-12-10
  • 打赏
  • 举报
回复
select t1.name , t2.name from
(select a.name from 学生表 a , 选课表 b where a.id = b.sid and b.id = '某课程号') t1,
(select a.name from 学生表 a , 选课表 b where a.id = b.sid and b.id = '某课程号') t2
where t1.name <> t2.name

你这个如果 学生A,B都选了课程a,好像会打出
A B
B A

怎么让打只打出
A B
dawugui 2007-12-10
  • 打赏
  • 举报
回复
--上面错了,a.id = b.id 改为 t1.id = t2.id
select t1.name , t2.name from
(select a.name , b.id from 学生表 a , 选课表 b where a.id = b.sid ) t1,
(select a.name , b.id from 学生表 a , 选课表 b where a.id = b.sid ) t2
where t1.id = t2.id and t1.name <> t2.name

dawugui 2007-12-10
  • 打赏
  • 举报
回复
select t1.name , t2.name from
(select a.name , b.id from 学生表 a , 选课表 b where a.id = b.sid ) t1,
(select a.name , b.id from 学生表 a , 选课表 b where a.id = b.sid ) t2
where a.id = b.id and t1.name <> t2.name

red_berries 2007-12-10
  • 打赏
  • 举报
回复
我的意思是选出选同一课程的学生对,这个同一课程不是固定的,
dawugui 2007-12-10
  • 打赏
  • 举报
回复
select t1.name , t2.name from
(select a.name from 学生表 a , 选课表 b where a.id = b.sid and b.id = '某课程号') t1,
(select a.name from 学生表 a , 选课表 b where a.id = b.sid and b.id = '某课程号') t2
where t1.name <> t2.name
dawugui 2007-12-10
  • 打赏
  • 举报
回复
A B
A C
B C
这样?

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧