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

Тема в разделе "Delphi - Базы данных", создана пользователем icef1ery, 8 апр 2013.

  1. icef1ery

    icef1ery New Member

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

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

    Что необходимо покажу (на примере). Необходимо записать в одну строчку (ячейку) данные у которых одинаковый customer_id.
    Пример:
    Код (Text):
    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).

    Но почему то когда я её соединяю и пишу запрос ответ она выводит не правильный.
    Пример моего кода
    Код (Text):
    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

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

    icef1ery New Member

    Регистрация:
    8 апр 2013
    Сообщения:
    4
    Симпатии:
    0
    Все еще нуждаюсь в помощи.
     
  3. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    не совсем понятно что надо в итоге
    но скорее всего последний left join [isp_dog].[dbo].[marka] on marka.marka_id=markacust.marka_id лишний
    вощем вы просто покажите какие есть данные и что надо получить, а то по неправильным результатам ваших запросов не оч. понятно
     
  4. icef1ery

    icef1ery New Member

    Регистрация:
    8 апр 2013
    Сообщения:
    4
    Симпатии:
    0
    to -master-
    Последний join нужен для наглядности конечно в правильно работающем запросе его не будет.

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

    первая таблица markacust (запрос select *)
    [​IMG]

    вторая таблица marka (запрос select *)
    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

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

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

    icef1ery New Member

    Регистрация:
    8 апр 2013
    Сообщения:
    4
    Симпатии:
    0
    Все еще актуально ;). Жду помощи добрых людей.
     
  6. icef1ery

    icef1ery New Member

    Регистрация:
    8 апр 2013
    Сообщения:
    4
    Симпатии:
    0
    Если кому актуально или понадобится то вот правильный код
    Код (Text):
    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
    Маленькая ошибка взорвала мозг на два дня. Но на ошибках учатся. Всем спасибо.
     
  7. magwin

    magwin New Member

    Регистрация:
    27 май 2013
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте парни и девушки) Пишу диплом, подскажите у меня такой вопрос:
    Есть база
    есть таблица cafe и поля к ней, id_image и image
    как загрузить рисунок с локальной машины в image
     
  8. edvard007

    edvard007 New Member

    Регистрация:
    4 апр 2010
    Сообщения:
    2
    Симпатии:
    0
    Я думаю, что тип надо указать string или текст и хранить в нем полный адрес изображения. И по нужде загружать его из поля в image.
     
  9. Titan

    Titan Well-Known Member

    Регистрация:
    10 июн 2004
    Сообщения:
    105
    Симпатии:
    0
    это как вариант, но по сути изображение будет в файловой системе хранится.
    можно использовать BLOB поле в самой базе для таких целей.
     
Загрузка...

Поделиться этой страницей