A表是主表,BC表都关联到A表,B和C表部分数据也有关联关系,现在要以A表为主,把B和C表数据全部查出来。
A表结构
aid name
1 张三
2 李四
B表结构
bid aid data
1 1 任务1
2 1 任务2
C表结构
cid bid aid data
1 1 1 执行任务1
2 null 2 执行任务3
需要查询结果为
a.aid a.name b.data c.data
1 张三 任务1 执行任务1
1 张三 任务2 null
2 李四 null 执行任务3
其中C表cid=2的数据没关联B表也要查出来,求sql语句
上面两位谢了,找到办法了,最好是用全连接查询,下面是mysql的查法,由于mysql不支持全连接,只能用union关键字
SELECT A.`name`, B.`btime`, C.`ctime` FROM A
INNER JOIN B ON b.`aid` = a.`aid`
LEFT JOIN C ON c.`aid` = a.`aid` AND c.`bid` = b.`bid`
UNION
SELECT A.`name`, NULL AS btime, C.`ctime` FROM A, C
WHERE c.`aid` = a.`aid` AND c.`bid` IS NULL
select * from A a let join B b on a.aid = b.aid left join C c on b.bid = c.bid
select a.aid,a.name,b.data,c.data from A a inner join B b on a.aid = b.aid left join C c on a.aid = c.aid
@情人节也放假 谢了,你的语句我也试过了,一样是不出现第三条李四的数据
不好意思,上面的btime和ctime对应的是B表和C表的data列