C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Помогите!!!!!!!!!!!!&#, Придумать запрос для InterBase
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 иногда бывает невредно подсматривать...

Вернуться в Работа с базами данных в C++Builder