求一sql

zzxiaoma 2013-06-27 10:02:27

表a
id bh gc name xm ....
1 zx01 aaa bbb ccc
2 zx02 ddd eee fff
3 zx03 ggg hhh iii
4 zx04 jjj kkk lll

表b
id bh cid per son
1 zx01 30 zxc dfg
2 zx01 30 dsdf gs
3 zx02 31 gsdg ss
4 zx03 30 ddd sew
5 zx03 31 gg sew
6 zx03 gg sew
7 zx04 rrr ttt
8 zx04 www xxx

表c
id gh gdw gds
30 h-01 gdse gdw
31 h-02 gew geee

想得到结果是
id bh gh gc name xm gdw gds ...
1 zx01,zx03 h-01 aaa,ggg bbb,hhh ccc,iii gdse gdw
2 zx02,zx03 h-02 ddd,ggg eee,hhh fff,iii gew geee
3 zx03 ggg hhh iii
3 zx04 jjj kkk lll

表a和表b通过bh关联,表b和表c通过cid关联,表c中的gh在列表中是唯一的,不会重复,如果表b中的cid是空的,结果里面也需要把他所对应的表a中的bh列出来
...全文
294 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdsnhan 2013-07-01
  • 打赏
  • 举报
回复
我觉得他给出的示例结果是错误的
爾亱 2013-06-30
  • 打赏
  • 举报
回复
提问者的问题描述能更清晰些吗?
gyouth 2013-06-28
  • 打赏
  • 举报
回复
我也感觉这个问题有问题!请提问者给与解释!
sych888 2013-06-28
  • 打赏
  • 举报
回复
感觉这个题有点问题,结果中把bh关联在一起,那就说明不能以 A表的ID分组,如果分组的话那Z01和Z03就弄不到一起;那以那列分组呢?
u010412956 2013-06-28
  • 打赏
  • 举报
回复
select a.id, wm_concat(b.bh), c.gh, a.gc, a.name, a.xm, c.gdw, c.gds
  from a
  join b
    on a.bh = b.bh
  left join c
    on b.cid = c.id
 group by a.id, c.gh, a.gc, a.name, a.xm, c.gdw, c.gds
GCC-pig 2013-06-28
  • 打赏
  • 举报
回复
select * from a ,(select * from b ,c on b.cid(+)=c.cid) t on a.bh(+)=t.bh(+); 我理解的这个就是多个表之间的关联

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧