三个表关联查询并返回制定数据。

图片说明

前面三个表分别为A,B,C 最终查询结果如最下面那个表所示,b表可能存在一对多的情况 ,出现这样的就用“,”隔开,谢谢各位,

在sql server 中这样实现

select a.*,d.zcrq
from a left join (
select distinct b.id ,stuff((select ',' + convert(varchar(20),c.zcrq)
from c
where c.zjh in (select e.zjh from b as e where e.id=b.id)
for xml path('')),1,1,'') as zcrq
from b) as d
on a.id=d.id

图片说明

select t2.id,t2.name,t2.age,wmsys.wm_concat(t2.zcrq) from (
select a.id,a.name,a.age from a a left join

( select b.id,c.zcrq from b b left join c c on b.zjh=c.zjh)t1
on t1.id=a.id
) t2 group by t2.id

SELECT
a.id,
a.name,
a.age,
GROUP_CONCAT(DISTINCT (c.zjrq)) AS zjrq
FROM
a
LEFT JOIN b
ON a.id = b.id
LEFT JOIN c
ON b.zjh = c.zjh
GROUP BY a.id,
a.name,
a.age

这是mysql的,oracle看看GROUP_CONCAT对应的函数是哪个。貌似这个CONCAT_WS??