sql关联三个表查询的问题

表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 codeo,nameo,namea,nameb,namec from
(select e.code codeo ,e.name nameo from code d,name e where e.id=d.id) as o

(select e.code codea,e.name namea from code d,name e where e.id=d.id and e.type="球类1") as a
on o.id=a.id
left join
(select e.code codeb ,e.name nameb from code d,name e where e.id=d.id and e.type="球类2") as b
on o.id=b.id
left join
(select e.code codec ,e.name namec from code d,name e where e.id=d.id and e.type="球类c") as c
on o.id=c.id

不是很明白你说的三个表是指哪三个,看到你的1,2查询里面的coded这个表没有在SELECT中用到,另外name表里面有type字段,觉得你这里其实只需要两个表就可以了
一个是学生表,包含学号,姓名,喜欢的球类运动的code,喜欢的棋类运动的code
一个是运动表,运动的code,运动的type和运动的名称
如果是这样的话,查询如下

SELECT T1.[学号]
    , T1.姓名
    , T2.Name AS [喜欢的球类运动]
    , T3.Name AS [喜欢的棋类运动]
FROM [学生表] T1
LEFT JOIN [运动表] T2 ON T2.type = "球类" AND T2.code = T1.[喜欢的球类运动]
LEFT JOIN [运动表] T3 ON T3.type = "棋类" AND T3.code = T1.[喜欢的棋类运动]

根据你的意思,我猜测e.code可能应该是。d.code,修改了查询,你试一下

SELECT T1.[学号]
    , T1.姓名
    , T4.Name AS [喜欢的球类运动]
    , T5.Name AS [喜欢的棋类运动]
FROM [学生表] T1
LEFT JOIN ([code] T2
        INNER JOIN [name] T4 ON T2.id= T4.id AND T2.type = "球类")
    ON T2.code = T1.[喜欢的球类运动]
LEFT JOIN ([code] T3
        INNER JOIN [name] T5 ON T3.id= T5.id AND T3.type = "棋类")
    ON T3.code = T1.[喜欢的棋类运动]