sqlserver查询一对多的关系、合并多条记录的某字段值到一个

2019-05-24  本文已影响0人  落叶为舟

sqlserver查询一对多的关系、合并多条记录的某字段值到一个字段

需求场景

现有如下两个表格construct和attachment,通过construct.id = attachment.link_id进行关联。

id type state title detail
1 房地产 正在建设 汉峪金谷1 汉峪金谷1建设详情
2 房地产 正在建设 汉峪金谷2 汉峪金谷2建设详情
3 房地产 正在建设 汉峪金谷3 汉峪金谷3建设详情
4 房地产 正在建设 汉峪金谷4 汉峪金谷4建设详情
5 房地产 正在建设 汉峪金谷5 汉峪金谷5建设详情
6 房地产 正在建设 汉峪金谷6 汉峪金谷6建设详情
7 房地产 正在建设 汉峪金谷7 汉峪金谷7建设详情
8 房地产 正在建设 汉峪金谷8 汉峪金谷8建设详情
9 房地产 正在建设 汉峪金谷9 汉峪金谷9建设详情
10 房地产 正在建设 汉峪金谷10 汉峪金谷10建设详情
11 房地产 正在建设 汉峪金谷11 汉峪金谷11建设详情
12 房地产 正在建设 汉峪金谷12 汉峪金谷12建设详情
13 房地产 正在建设 汉峪金谷13 汉峪金谷13建设详情
18 房地产 正在建设 汉峪金谷14 汉峪金谷14建设详情
19 城市交通 规划中 经十路绿化改造 经十路绿化改造建设详情
20 房地产 正在建设 汉峪金谷小学 汉峪金谷小学建设详情
21 房地产 正在建设 万达 万达建设详情
id file_type file_name file_path link_id
1 房地产 NULL UploadFile\房地产\20190521094020_488565885.png NULL
2 房地产 NULL UploadFile\房地产\20190521094020_488565888.png NULL
3 房地产 NULL UploadFile\房地产\20190521094020_401360686.png NULL
4 房地产 NULL UploadFile\房地产\tmp_e08784ed754d0261517d218d7caee08293fed9c0ebcf53e8.jpg 11
5 房地产 NULL UploadFile\房地产\20190521095050tmp_e08784ed754d0261517d218d7caee08293fed9c0ebcf53e8.jpg 12
6 城市交通 NULL UploadFile\城市交通\20190521140341_52478786.png 19
7 城市交通 NULL UploadFile\城市交通\20190521140341_52478788.png 19
8 城市交通 NULL UploadFile\城市交通\20190521140341_52478786.png 19
9 房地产 NULL UploadFile\房地产\20190522094023_813675778.png 20
10 房地产 NULL UploadFile\房地产\20190522094023_813675776.png 20
11 房地产 NULL UploadFile\房地产\tmp_a0b9403f7cf36457b661ac0f446f61d39bc3d201b35db080.jpg 21
12 房地产 NULL UploadFile\房地产\tmp_b1e1ac79eaf26cf78d653c582fa06610d20f9ebbd378798a.jpg 21

现需要从attachment表提取每一个construct对应的多个file_path值,并与construct合并。

方法

通过stuff()、 for xml path() 进行拼接,直接上sql语句:

 select c.*,
    STUFF( (select file_path+',' from attachment where link_id=c.id for xml path('')),
     1, 0, '' )  files
 from construct c

查询结果为:

id type state title detail files
1 房地产 正在建设 汉峪金谷1 汉峪金谷1建设详情 NULL
2 房地产 正在建设 汉峪金谷2 汉峪金谷2建设详情 NULL
3 房地产 正在建设 汉峪金谷3 汉峪金谷3建设详情 NULL
4 房地产 正在建设 汉峪金谷4 汉峪金谷4建设详情 NULL
5 房地产 正在建设 汉峪金谷5 汉峪金谷5建设详情 NULL
6 房地产 正在建设 汉峪金谷6 汉峪金谷6建设详情 NULL
7 房地产 正在建设 汉峪金谷7 汉峪金谷7建设详情 NULL
8 房地产 正在建设 汉峪金谷8 汉峪金谷8建设详情 NULL
9 房地产 正在建设 汉峪金谷9 汉峪金谷9建设详情 NULL
10 房地产 正在建设 汉峪金谷10 汉峪金谷10建设详情 NULL
11 房地产 正在建设 汉峪金谷11 汉峪金谷11建设详情 UploadFile\房地产\tmp_e08784ed754d0261517d218d7caee08293fed9c0ebcf53e8.jpg,
12 房地产 正在建设 汉峪金谷12 汉峪金谷12建设详情 UploadFile\房地产\20190521095050tmp_e08784ed754d0261517d218d7caee08293fed9c0ebcf53e8.jpg,
13 房地产 正在建设 汉峪金谷13 汉峪金谷13建设详情 NULL
18 房地产 正在建设 汉峪金谷14 汉峪金谷14建设详情 NULL
19 城市交通 规划中 经十路绿化改造 经十路绿化改造建设详情 UploadFile\城市交通\20190521140341_52478786.png,UploadFile\城市交通\20190521140341_52478788.png,UploadFile\城市交通\20190521140341_52478786.png,
20 房地产 正在建设 汉峪金谷小学 汉峪金谷小学建设详情 UploadFile\房地产\20190522094023_813675778.png,UploadFile\房地产\20190522094023_813675776.png,
21 房地产 正在建设 万达 万达建设详情 UploadFile\房地产\tmp_a0b9403f7cf36457b661ac0f446f61d39bc3d201b35db080.jpg,UploadFile\房地产\tmp_b1e1ac79eaf26cf78d653c582fa06610d20f9ebbd378798a.jpg,

更多文章请移步我的博客:
都不敢自称码农的Coder

上一篇下一篇

猜你喜欢

热点阅读