Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Woron Member Откуда: Сообщений: 6 |
Здравствуйте. Условие. Есть некая таблица adress с полями id, id_gorod, id_street, id_oblast, id_rayon. и четыре справочника с парами ключ-значение (id, name) gorod, street, oblast, rayon Как написать запрос что бы в случае если один из индентификаторов в главной таблице не указан, то выводилось "хоть что нибудь". если просто написать select gorod.name, street.name, oblast.name, rayon.name from adress, gorod, street, oblast, rayon where (adress.id_gorod=gorod.id)and(adress.id_street=street.id)and(adress.id_oblast=oblast.id)and(adress.id_rayon=rayon.id); то в случае, если у объекта окажется, допустим не заполнено поле id_rayon, то запрос ничего не выведет, т.к. rayon.id не может быть null или просто пустым. А хотелось бы написать такой запрос что бы если какое то id_xxxx было null, то запрос выводил все имеющиеся данные а которые null, выводил путое значение. id_gorod, id_street, id_oblast, id_rayon нельзя сделать not_null, по двум причинам, во первых изменить базу я немогу, я могу только выполнить к ней запрос, а во вторых у какого либо объекта действительно может не быть района. И вообще возможно ли написать такое средствами sql или на худой конец MS SQLServer, не прибегая к программированию на ЯВУ. Спасибо. |
23 июл 12, 15:14 [12903077] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
outer join |
23 июл 12, 15:15 [12903084] Ответить | Цитировать Сообщить модератору |
Klick Member Откуда: Стерлитамак - Москва Сообщений: 1023 |
Мммм, какой стайл! Давно не видел :) SELECT gorod.name, street.name, oblast.name, rayon.name FROM adress LEFT OUTER JOIN gorod ON adress.id_gorod = gorod.id LEFT OUTER JOIN street ON adress.id_street = street.id LEFT OUTER JOIN oblast ON adress.id_oblast = oblast.id LEFT OUTER JOIN rayon ON adress.id_rayon = rayon.id |
||
23 июл 12, 16:29 [12903877] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |