数据库多表查询,一对多,一对一

数据库多表查询,一对多,一对一

悟红尘 发布于 2021-11-24 字数 492 浏览 816 回复 9

a b c 三张表 a对b,是一对多,b对c 是一对一 b表中的pid 对应a表中的oid,c表中bm对应b表中的orgtype

a表字段 oid,uname,addr, b表字段 oid,pid,orgtype c表字段 oid,bm,val

现在要查询寻字段:uname,addr,val,怎么写sql 注:

a表{‘1’,‘aaa’,‘www’}

b表{‘1’,‘1’,‘10’}{‘2’,‘1’,‘12’}

c表{‘1’,‘10’,‘使用’},{‘2’,‘12’,‘安装’},{‘3’,‘15’,‘制造’}

期望的结果是:{aaa,www,使用/安装}而不是{aaa,www,使用},{aaa,www,安装}

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

妖妓 2021-12-01 9 楼

环卫工人作文http://www.zuowen.org.cn/chusanylw/201301/13587536541473.html

反目相谮 2021-12-01 8 楼

引用来自“siny”的评论

group_concat好像sql server 2000没有这个函数把。。

恋你朝朝暮暮 2021-12-01 7 楼

group_concat好像sql server 2000没有这个函数把。。

自此以后,行同陌路 2021-12-01 6 楼

group_concat好像sql server 2000没有这个函数把。。

终陌 2021-12-01 5 楼

回复
那是mysql的,sql server2000的话要自己写函数了。

倚栏听风 2021-12-01 4 楼

回复
这么写行不行?没执行过的。 select a.uname,a.addr, ,( select c.val + '/' from c where b.oid=c.oid for xml path('') ) as val_concat from a,b where a.oid=b.pid and group by a.oid;

女中豪杰 2021-12-01 3 楼

@茶壶 最后还是写了个函数来解决的。。谢谢了!

甜柠檬 2021-12-01 2 楼

回复
不客气,微软有点岁数大了哈。

不再见 2021-11-30 1 楼

select

a.uname,a.addr,group_concat(c.val separator '/') as val from a,b,c

where

a.oid=b.pid and

b.oid=c.oid

group by a.oid;