请教一个联合查询SQL语句

2018-09-26 14:37:40 +08:00
 daijinming

现在有四个表,一个主表(A),三个从表(B1,B2,B3),当 主表(A) 中 type=1,B1 中有条记录和 A 对应,type=2,B2 中有条记录和 A 对应,type=3,B3 中有条记录和 A 对应。

A 表结构 AID,TYPE,TITLE

B1,B2,B3 表结构 BID,AID,BCODE

需要创建一个 SQL 语句查询以 A 表为主的记录,需要关联出 B1,B2,B3 中的 BCODE

高手指教

1364 次点击
所在节点    程序员
3 条回复
moresteam
2018-09-26 14:47:45 +08:00
select a.AID,a.TYPE,a.TITLE,b1.BCODE from A a LEFT join B1 b1 on a.AID=b1.AID where a.TYPE=1
union all
select a.AID,a.TYPE,a.TITLE,b2.BCODE from A a LEFT join B2 b2 on a.AID=b2.AID where a.TYPE=2
union all
select a.AID,a.TYPE,a.TITLE,b3.BCODE from A a LEFT join B3 b3 on a.AID=b3.AID where a.TYPE=3
justfindu
2018-09-26 14:55:36 +08:00
SELECT
a.*,
b1.bcode AS b1_code,
b2.bcode AS b2_code,
b3.bcode AS b3_code
FROM
a
LEFT JOIN b1 ON b1.aid = a.id
AND a.type = 1
LEFT JOIN b2 ON b2.aid = a.id
AND a.type = 2
LEFT JOIN b3 ON b3.aid = a.id
AND a.type =3
daijinming
2018-09-26 15:40:06 +08:00
参考两位的 SQL 语句,CSharp 高级开发交流群 256718021 中七爷和 Knight 给出了完善的 SQL 语句

~~~
SELECT
a.*,
COALESCE(B1.BCODE,B2.BCODE,B3.BCODE) BCODE
FROM
a
LEFT JOIN b1 ON b1.aid = a.id
AND a.type = 1
LEFT JOIN b2 ON b2.aid = a.id
AND a.type = 2
LEFT JOIN b3 ON b3.aid = a.id
AND a.type =3
~~~

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

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

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

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

© 2021 V2EX