Помощь с запросом и функцией cast

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

Ответить
icef1ery
Сообщения: 1
Зарегистрирован: 08 апр 2013, 13:22

08 апр 2013, 13:28

Здравствуйте уважаемые форумчане нужна помощь. Если кто поможет буду благодарен.
Есть 2 таблицы.
Первая таблица:
Название markcust
Поля idmarkcust (int), customer_id (int), mark_id (int).
Вторая таблица:
Название marka
Поля marka_id (int), marka (char).

Связь FK_markacust_marka между "marka" и "markacust"

Что необходимо покажу (на примере). Необходимо записать в одну строчку (ячейку) данные у которых одинаковый customer_id.
Пример:

Код: Выделить всё

select distinct markacust.customer_id, markacust.marka_id,  (select cast(marka_id as nvarchar) + ',' as 'data()'  
from [isp_dog].[dbo].[markacust] t2 where [isp_dog].[dbo].[markacust].customer_id = t2.customer_id  group by marka_id for xml path('') )
from [isp_dog].[dbo].[markacust]
group by markacust.marka_id, markacust.customer_id
Результат:
Картинка

А теперь к проблеме.
Данное соединение у меня получается только в текущей таблице, а мне необходимо соединить данные из справочника(дополнительной таблицы №2).

Но почему то при когда я её соединяю и пишу запрос ответ она выводит не правильный.
Пример моего кода

Код: Выделить всё

select distinct markacust.customer_id, markacust.marka_id, marka.marka, (select cast((marka) as nvarchar) + ',' as 'data()' 
from [isp_dog].[dbo].[markacust] t2
left join [isp_dog].[dbo].[marka] on marka.marka_id=markacust.marka_id
where [isp_dog].[dbo].[markacust].customer_id = t2.customer_id for xml path('') )
from [isp_dog].[dbo].[markacust]
left join [isp_dog].[dbo].[marka] on marka.marka_id=markacust.marka_id
И результат
Картинка2


А нужно что бы в последнем столбце было Marka1, Marka2, Marka3

Если кто поможет буду благодарен. Спасибо.
Ответить