Помощь С Sql Запросом

  • Автор темы icef1ery
  • Дата начала
I

icef1ery

Здравствуйте уважаемые форумчане нужна помощь. Если кто поможет буду благодарен.
Есть 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

И результат



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

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

-master-

не совсем понятно что надо в итоге
но скорее всего последний left join [isp_dog].[dbo].[marka] on marka.marka_id=markacust.marka_id лишний
вощем вы просто покажите какие есть данные и что надо получить, а то по неправильным результатам ваших запросов не оч. понятно
 
I

icef1ery

to -master-
Последний join нужен для наглядности конечно в правильно работающем запросе его не будет.

так теперь приведу максимально возможное количество данных.

первая таблица markacust (запрос select *)
link removed

вторая таблица marka (запрос select *)
link removed

нужно получить следующие
SQL запрос должен вернуть следующие данные

link removed

или distinct значение необходимое в итоге

link removed

то есть в принципе нужно вернуть только
marka1, marka2, marka3
вот это не получается

Добавлю что из первого примера в первом посте следует то, что если нужно получить данные из одной таблицы проблемы не возникает. А вот если соединять таблицы результат получается не тот.

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

icef1ery

Все еще актуально ;). Жду помощи добрых людей.
 
I

icef1ery

Если кому актуально или понадобится то вот правильный код
Код:
select distinct (select cast((marka) as nvarchar) + ',' as 'data()' 
from [isp_dog].[dbo].[markacust] t2
left join [isp_dog].[dbo].[marka] on marka.marka_id=t2.marka_id
where [isp_dog].[dbo].[markacust].customer_id = t2.customer_id for xml path('') ) as new
from [isp_dog].[dbo].[markacust]
left join [isp_dog].[dbo].[marka] on marka.marka_id=markacust.marka_id
Маленькая ошибка взорвала мозг на два дня. Но на ошибках учатся. Всем спасибо.
 
M

magwin

Здравствуйте парни и девушки) Пишу диплом, подскажите у меня такой вопрос:
Есть база
есть таблица cafe и поля к ней, id_image и image
как загрузить рисунок с локальной машины в image
 
E

edvard007

Здравствуйте парни и девушки) Пишу диплом, подскажите у меня такой вопрос:
Есть база
есть таблица cafe и поля к ней, id_image и image
как загрузить рисунок с локальной машины в image
Я думаю, что тип надо указать string или текст и хранить в нем полный адрес изображения. И по нужде загружать его из поля в image.
 
T

Titan

Я думаю, что тип надо указать string или текст и хранить в нем полный адрес изображения. И по нужде загружать его из поля в image.

это как вариант, но по сути изображение будет в файловой системе хранится.
можно использовать BLOB поле в самой базе для таких целей.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!