数据库查询一对多关系,只列出一条数据

比如有3个表table1,table2,table3,为简洁说明,设其中table1,table2都只包括2个字段,一个是id,一个是name,table1与table2... 比如有3个表
table1, table2, table3, 为简洁说明,设其中table1,table2都只包括2个字段,一个是id,一个是name,table1与table2中记录是一对多关系, table3是两者的关系表,有2个字段,table1_id,table2_id
现在由于需要查询的通用性,写一个方法
初始化的查询语句,在oracle中的sql
select aaa.*,bbb.name as bbb_name from table1 aaa
left join table3 ccc on aaa.id=ccc.table1_id
left join table2 bbb on ccc.table2_id=bbb.id
where 1=1
然后需要增加额外的查询条件,比如需要查询table2.name是否包含'王',只需要在后面增加 and bbb.name like '%王%' 之类的就可以了
但是,由于table3是一对多的关系表,那么,查询的结果有可能会出现 table1中的一条数据在查询结果中是多条数据,但是事实上,我只需要显示一条数据就行了,如果查询条件中刚好包括了bbb.name like '%王%'之类的,并且查询只得到一条结果,倒是刚好,但是如果查询结果是多条该怎么办(比如恰好没有用到bbb.name这个查询条件,那么可以说基本上table1中每条数据在结果中都是以多条结果显示的),但是bbb.name这个字段又是必须要的
问:能否实现将 table1中每条记录对应的table2.name合并到同一条结果中加以显示?
对sql不是太熟悉,盼高手指导
展开
 我来答
feijiusi
2012-01-05
知道答主
回答量:18
采纳率:0%
帮助的人:7.5万
展开全部
select aaa.*,bbb.name as bbb_name from table3 ccc
left join table1 aaa on aaa.id=ccc.table1_id
left join table2 bbb on bbb.id=ccc.table2_id
where 1=1

应该根据table3 进行联合查询
你上面的是Left table1 当然是显示table1里的数据了
xckouy
推荐于2018-02-28 · TA获得超过1538个赞
知道小有建树答主
回答量:1291
采纳率:0%
帮助的人:858万
展开全部
select aaa.*, wmsys.wm_concat (bbb.name) as bbb_name from table1 aaa
left join table3 ccc on aaa.id=ccc.table1_id
left join table2 bbb on ccc.table2_id=bbb.id
where 1=1
group by aaa.id,aaa.name

参考资料: http://hi.baidu.com/xckouy/blog/item/8edeba57570f703a43a75b5c.html

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式