Tors |
Отправлено: 20.03.2004, 17:26 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 15
|
Есть 2 таблицы:
T1(id integer primary key,str varchar(30))]
T2(id integer nprimary key,str_id integer foreign key(T1(id))
T1:
id str
1 БабаКлава
2 Москва
T2:
id str_id
1 2
2 2
3 1
4 NULL
5 NULL
Как мне составить мфксимально эффективный запрос, чтоб вывелись не только поля с T1.id=T2.str_id,
но и str_id=NULL |
|
Guest |
Отправлено: 21.03.2004, 19:00 |
|
Не зарегистрирован
|
Во первых в T2 поле str_id integer не должно быть объявлено
как NOT NULL. то есть оно должно допускать значения NULL
Select ....
from T1,T2
where (T1.id = T2.str_id) or (T2.str_id is NULL)
также см LEFT INNER JOIN / LEFT OUTER JOIN |
|
olegenty |
Отправлено: 26.03.2004, 11:09 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
только INNER не бывает LEFT :-)), на то он и INNER.
Select ....
from T1 RIGHT OUTER JOIN T2
ON T1.id = T2.str_id
выбирает все значения, удовлетворяющие условию объединения, и те записи из таблицы T2, которые условию объединения не удовлетворяют. при этом недостающие в данном случае поля заполняются значением NULL.
вот так это на самом деле выглядит. ребят, в стандарт SQL-92 иногда бывает невредно подсматривать...
|
|