Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запрос по трем таблицам 
V
    Опции темы
direk2006
Дата 20.1.2015, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.11.2011

Репутация: нет
Всего: нет



Есть две таблицы, в которых реализованная связь много-ко-многим через третью таблицу.
1-я таблица "actor" - имена актеров
2-я "Pictures"- фотки актеров
3-я "foto" - связи между ними.

Если есть запись в 1, 2 и 3 таблице - запрос работает.
А если только актер, а фотки нет (соотвественно 2 и 3 таблица пустая) - запрос выводит пустое значение.

А надо, чтобы показывало и такой вариант (в смысле инфу с первой таблицы, а по второй и третьей заполняло нулями, если там нет значений)

Код

 use emty_base; 
 select  actor.actor_id,  actor.name_actor, 
        foto.stream_id, foto.actor_id,                                      
        Pictures.stream_id, Pictures.name                                   
 FROM actor INNER JOIN  foto       ON actor.actor_id  = foto.actor_id       
               INNER JOIN  Pictures ON foto.stream_id = Pictures.stream_id         
 WHERE actor.actor_id = :actor_id  
 

Понимаю, что  дело в структуре запроса и его надо переделать, но вот куда копать???
Только учусь, поетому буду благодарен за любую подсказку....                                 
    
PM MAIL   Вверх
Akina
Дата 21.1.2015, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Заменить внутреннее (INNER) связывание на левое (LEFT).


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ТоляМБА
Дата 21.1.2015, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



Цитата(direk2006 @  20.1.2015,  22:17 Найти цитируемый пост)
 а по второй и третьей заполняло нулями, если там нет значений
В Select вместо нужного поля, например Pictures.name пишешь ISNULL(Pictures.name, 0) но, ты не указал СУБД, в твоей может быть и по другому это реализуется.
PM   Вверх
direk2006
Дата 21.1.2015, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.11.2011

Репутация: нет
Всего: нет



Цитата(ТоляМБА @ 21.1.2015,  11:45)
Цитата(direk2006 @  20.1.2015,  22:17 Найти цитируемый пост)
 а по второй и третьей заполняло нулями, если там нет значений
В Select вместо нужного поля, например Pictures.name пишешь ISNULL(Pictures.name, 0) но, ты не указал СУБД, в твоей может быть и по другому это реализуется.

Akina, спасибо! Буду дома, попробую...

ТоляМБА, использую  MS SQL Server 2012. Таблица Pictures, где сохраняю фотки имеет тип  FileTable. 

ISNULL(Pictures.name, 0) - если есть, выводит значение, если нет - в результ. таблице выведет "NULL".

Я правильно понял?
PM MAIL   Вверх
ТоляМБА
Дата 21.1.2015, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



Цитата(direk2006 @  21.1.2015,  14:17 Найти цитируемый пост)
ISNULL(Pictures.name, 0) - если есть, выводит значение, если нет - в результ. таблице выведет "NULL".

Я правильно понял? 


Нет.
Select Pictures.name - если есть значение выведет его, если нет - выведет NULL.
Select ISNULL(Pictures.name, 0) - если есть значение выведет его, если нет - выведет 0.

Ты же сам просил:
Цитата(direk2006 @  20.1.2015,  22:17 Найти цитируемый пост)
а по второй и третьей заполняло нулями, если там нет значений


PM   Вверх
direk2006
Дата 21.1.2015, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.11.2011

Репутация: нет
Всего: нет



Все, дошло наконец! Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0807 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.