请教一个 sql 问题,在线等.

2018-11-24 09:21:06 +08:00
 chaleaochexist
书到用时方恨少哈.

爷爷表
爸爸表
儿子表 1
儿子表 2

想关联查询所有爷爷.id = 1 的所有子孙数据.

select * from 爷爷
left join 爸爸
on 爷爷.id=爸爸.爷爷_id
left join 儿子 1
on 儿子 1.爸爸_id = 爸爸.id
left join 儿子 2
on 儿子 2.爸爸_id = 爸爸.id

这么写没毛病吧?
2184 次点击
所在节点    程序员
8 条回复
kely
2018-11-24 09:28:20 +08:00
直接从爸爸表开始查,爸爸表上本身有 爷爷_id。
petelin
2018-11-24 09:30:23 +08:00
from 爷爷查出来的是爷爷吧
kran
2018-11-24 09:38:54 +08:00
写两条 SQL 就完事了啊,干嘛非得塞一条里
mwiker
2018-11-24 09:46:04 +08:00
select t.* from 儿子 1 t inner join 爸爸 t2 on t.爸爸_id = t2.id and t2.爷爷_id = 1
union all
select t.* from 儿子 2 t inner join 爸爸 t2 on t.爸爸_id = t2.id and t2.爷爷_id = 1
xipushi
2018-11-24 10:36:48 +08:00
Sql 没毛病啊。儿子表为什么有两个?爸爸表爷爷表只有一个?
JackieMe
2018-11-24 10:48:46 +08:00
中文编程指日可待啊
lsido
2018-11-24 13:43:15 +08:00
秀儿
cc959798
2018-11-24 14:44:43 +08:00
union all 解决,并且不需要连接爷爷表

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/511012

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX