2014-02-28 3 views
2

У меня есть компания, индустрия и company_industry_map таблица многих-ко-многим.SQL Server объединяет результаты как список, разделенный запятой

company_id | company_name 
1   Goldman Sachs 
2   Microsoft 

industry_id | industry 
4    Technology 
5    Finance 
6    Banking 

company_id | industry_id 
1   5 
1   6 
2   4 

Я хотел бы написать запрос, который объединяет все из отраслей промышленности, в разделенных запятыми список, как это:

company_id | industries 
1   Finance, Banking 
2   Technology 

Вот мой общий запрос, который я пытаюсь написать:

SELECT company_id, 
     xxx AS industries 
    FROM company c, 
     company_industry_map m 
WHERE c.company_id = m.company_id 
+0

Какую базу данных вы используете? SQL Server, MySQL и т. Д. –

+0

Я использую SQL Server –

+1

Вы можете посмотреть: http://stackoverflow.com/questions/8700961/using-coalesce-function-to-make-values-separated-with-commas –

ответ

6

Вы можете использовать что-то вроде этого в SQL Server

select co.CompanyID, AllIndustries = 
     (select (cast(industry as varchar(200))+',') as [text()] 
     FROM company c, 
     company_industry_map m 
     WHERE c.company_id = m.company_id and c.company_id = co.company_id 
     order by industry_id for XML PATH('')) 
from Companies co 
0

В SQL Server можно создать такую ​​функцию:

declare @var nvarchar(max) 

set @var = '' 
select @var = @var + ',' + UserLogin from [user] 

select @var 
Смежные вопросы