sqlserverは、1対の複数の関係をクエリーし、複数のレコードのフィールド値を1つのフィールドにマージします.

4170 ワード

sqlserverは、1対の複数の関係をクエリーし、複数のレコードのフィールド値を1つのフィールドにマージします.
需要シーン
既存の2つのテーブルconstructとattachmentはconstruct.を介してid = attachment.link_idを関連付けます.
  • 表construct
  • 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
    不動産
    建設中
    万達
    万達建設の詳細
  • 表attachment
  • 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不動産201905210950550 tmp_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
    各constructに対応する複数のfile_をattachmentテーブルから抽出する必要がある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不動産201905210950550 tmp_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を自称する勇気がありません