表a和表b 通过两个查询分别得到以下两组数据
1,select e.code ,e.name from code d,name e where e.id=d.id and e.type="球类"
2,select e.code ,e.name from code d,name e where e.id=d.id and e.type="棋类"
code name
01 足球
02 篮球
03 羽毛球
code name
101 围棋
102 象棋
103 五子棋
表c 学生表 字段如下
学号 姓名 …… 喜欢的球类运动 喜欢的棋类运动
1 张三 01 101
如何关联表a表b查询学生表 并显示的正确球类运动,棋类运动
使用左连接查询
select 学号 姓名 …… 喜欢的球类运动 喜欢的棋类运动
from students s
inner join (select e.code ,e.name from code d,name e where e.id=d.id and e.type="球类") as t1
on s.喜欢的球类运动 = t1.code
inner join (select e.code ,e.name from code d,name e where e.id=d.id and e.type="棋类") as t2
on s.喜欢的棋类运动 = t2.code
试试这样
报错缺少关键字
@伊夏丶: ...报的什么错?解决了吗?
@_天光云影: 应该是你写的派生表没取别名。你写的派生表应该都是没有列名的,使用派生表应该要保证派生表的完整性,派生表中的列名一定要去别名
select 学号 姓名 …… 喜欢的球类运动 喜欢的棋类运动
from students s
inner join (select e.code as 球的编号 ,e.name as 球的名字 from code d,name e where e.id=d.id and e.type="球类") as t1
on s.喜欢的球类运动 = t1.球的编号
inner join (select e.code as 棋的编号 ,e.name as 棋的名字 from code d,name e where e.id=d.id and e.type="棋类") as t2
on s.喜欢的棋类运动 = t2.棋的编号
这样应该可以了
你这样写表名头不晕吗
不是我建的 --