Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Есть два запроса. Как сделать один из них.


Автор: SAnatoliy 29.1.2018, 13:05
запрос 1
Код

SELECT ADR.ip_adres,DEV.skd_device
FROM ip_adress ADR
JOIN ip_skd SKD ON ADR.ip_adressID = SKD.ip_adressID
JOIN skd_devices DEV ON DEV.skd_deviceID = SKD.skd_deviceID
WHERE ADR.ip_adres = '1.1.1.1'

запрос 2
Код

SELECT VID.name_device
FROM ip_adress ADR
JOIN ip_video VD ON ADR.ip_adressID = VD.ip_adressID
JOIN video_device VID ON VID.vid_deviceID = VD.vid_deviceID
WHERE ADR.ip_adres = '1.1.1.1'



Запрос 3.
Работает не правильно. Может бред, но пробовал так: 
Код

SELECT ADR.ip_adres,DEV.skd_device,VID.name_device
FROM ip_adress ADR

JOIN ip_video VD ON ADR.ip_adressID = VD.ip_adressID
JOIN video_device VID ON VID.vid_deviceID = VD.vid_deviceID

JOIN ip_skd SKD ON ADR.ip_adressID = SKD.ip_adressID
JOIN skd_devices DEV ON DEV.skd_deviceID = SKD.skd_deviceID

WHERE ADR.ip_adres = '1.1.1.1'


(если в одном из джойнов не будет данных, то запрос не работает совсем. если в обоих джойнах есть, то отображает правильно. )

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


user posted image

Автор: Snowy 29.1.2018, 14:46
использовать left join вместо join

Автор: SAnatoliy 29.1.2018, 14:49
Цитата(Snowy @  29.1.2018,  14:46 Найти цитируемый пост)
использовать left join вместо join 



заменить все join (4ре) ?  


Автор: Akina 29.1.2018, 15:41
Цитата(SAnatoliy @  29.1.2018,  14:05 Найти цитируемый пост)
если в одном из джойнов не будет данных

Ту таблицу (или те таблицы), в которых может не быть данных - LEFT. Остальные - можно оставить INNER или тоже сделать LEFT. 

Автор: SAnatoliy 29.1.2018, 16:17
Всем огромное спасибо.  Поставил на всех, так как везде могут быть пусто.

Жаль, не могу всем поставить +. Модератор, если возможно поставьте + "Snowy" и "Akina".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)