множественный результат запроса в виде строки CSV в новом столбце - PullRequest
0 голосов
/ 31 марта 2011

У меня есть 3 таблицы:

Пользователь, продукт user2product

каждый продукт имеет ID.

Можно ли написать запрос, в результате которого я получу 2 столбца:

UserID, Products

И в столбце продуктов у меня есть все продукты, связанные с пользователем таблицей user2product, разделенные запятой.

Ответы [ 2 ]

0 голосов
/ 31 марта 2011

Вполне возможно сделать это, используя нативный tsql, используя оператор for xml path, как подробно здесь

Для доступа к этому через linq создайте хранимую процедуру на БД, перетащите ееваш файл dbml и затем вызовите его из контекста данных, как метод.

Код для sp будет выглядеть примерно так:

select
    u.userid,
    substring(( select ',' + cast(p.productid as nvarchar(20))
        from
            user2product up inner join
            product p on up.productid = p.productid
        where
            up.userid = u.userid
        for xml path('')),2,2000000) as Products
from
    users u
0 голосов
/ 31 марта 2011

о каком SQL-диалекте идет речь?Для postgresql здесь есть довольно полный ответ: Как объединить строки строкового поля в запросе группы 'PostgreSQL'?

Для других SQL-систем идеядолжно быть почти таким же.Вам нужно будет найти правильную функцию агрегирования, все остальное можно сделать с помощью простой директивы group by.

Cheers Thilo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...