SQL объединяет строки в одно значение - PullRequest
1 голос
/ 26 мая 2019

У меня есть две таблицы: users_tbl и images tbl.

У каждого пользователя может быть несколько изображений.

Я пытаюсь выбрать всех пользователей и объединитьпользовательское изображение в одной строке

Пример:

Пользователи Табл

user_id    user_name
--------------------
 1          david
 2          tarik

Изображения Табл

image_id   user_id   image_url 
-------------------------------
1            1      "image 12312 url"
2            1      "image 123 url"
3            1      "image 313 url"
4            1      "image 212 url"
5            2      "my image url"
5            2      "my image url2"

Мне нужен оператор выбора, который возвращает следующий результат:

user_id   image_url 
----------------------------------------------------------------------
    1     "image 12312 url ,image 123 url,image 313 url,image 212 url"
    2     "my image url , my image url2"

Ответы [ 2 ]

1 голос
/ 26 мая 2019

В SQL Server 2012 вы должны использовать for xml path:

select u.*,
       stuff( (select ', ' + i.image_url
               from images i
               where i.user_id = u.user_id
               for xml path ('')
              ), 1, 2, ''
            ) as image_urls
from users u;

EDIT:

Если вы хотите запятую в конце, пропустите stuff() и используйте:

select u.*,
       (select i.image_url + ', '
        from images i
        where i.user_id = u.user_id
        for xml path ('')
       ) as image_urls
from users u;
0 голосов
/ 26 мая 2019
SELECT [users].[user_id], [images].[image_url]
FROM [images]
INNER JOIN [users] ON
    [users].[user_id] = [images].[user_id]

, затем используйте этот результат, связанный здесь.

...