Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение двух таблиц ? / 4 сообщений из 4, страница 1 из 1
15.10.2002, 17:33:30
    #32058503
Объединение двух таблиц ?
Уважаемые гуру, помогите.

Совсем растерялся...
У меня есть большая таблица с множеством полей - A(ID,........,ID_Crew). И есть много таблиц справочников - например: B(ID_Crew,CrewName). Нужно сделать выборку с определёнными условиями для таблицы A, например (A.ID = 3). Но при этом вывести столбцы A.ID, ... A.CrewName. Но дело в том, что A.ID_Crew может содержать значение Null. И хотелось бы получить надпись 'нет', если ID_Crew содержит null

Я сделал запрос -

Код: plaintext
1.
SELECT A.ID, CASE WHEN A.ID_Crew is null then 'НЕТ' else b.CrewName end as CrewName 
FROM A , B WHERE A.ID =  3  and (A.ID_Crew = B.ID_Crew OR A.ID_Crew is null)


Нифига не работает, выводит все записи у которых A.ID_Crew равняется null.

Так как же быть? Помогите пожалуйста.

Благодарен за внимание, Александр.
...
Рейтинг: 0 / 0
15.10.2002, 17:47:50
    #32058510
Эдуард
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение двух таблиц ?
select A.ID, case when B.ID_Crew is null then 'нет' else B.CrewName end
from A, B
where A.ID_Crew *= B.ID_Crew
...
Рейтинг: 0 / 0
15.10.2002, 18:59:10
    #32058535
OCLiker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение двух таблиц ?
Уточню предыдущее высказывание - вместо Case лучше пользоваться isNull

select A.ID, ISNULL(B.CrewName,'нет')
from A, B
where A.ID_Crew *= B.ID_Crew
...
Рейтинг: 0 / 0
16.10.2002, 10:29:17
    #32058650
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение двух таблиц ?
Если это не противоречит вашим корпоративным правилам, используйте явное описание JOIN. Это гораздо нагляднее и проще в понимании, чем конструкция A, B, C, D.
Все условия связывания таблиц пишутся в JOIN, а условия, ограничивающие выборку в WHERE.
Попробуйте, вам понравится. :)
Код: plaintext
1.
2.
3.
SELECT A.ID, CASE WHEN A.ID_Crew is null then 'НЕТ' else b.CrewName end as CrewName 
FROM A 
  LEFT JOIN B ON A.ID_Crew = B.ID_Crew
WHERE A.ID =  3  
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение двух таблиц ? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]