Вниз
Скачать: CL | DM;

Составить оптимальный запрос   Найти похожие ветки 

 
onix   (2003-10-22 13:15) [0]

Добрый день уважаемые. Помогите составить запрос оптимальней, а то чего-то я совсем заморочился. (БД Firebird)
Усть две таблицы. Необходимо выбрать ФИО из 1-й табл. у которых нет записей во 2-й. Я написал так:

select STUDENT_ID, STUDENT_SURNAME
from DEAN_STUDENT
where not Exists (select *
from DEAN_MOVEMENT, DEAN_STUDENT
where M_STUDENT=STUDENT_ID)
но всегда выдает пустой список(???), а вот такой запрос работает очень долго:
seleсе STUDENT_SURNAME
from DEAN_STUDENT");

where STUDENT_ID not in (select M_STUDENT
from DEAN_MOVEMENT,DEAN_STUDENT
where M_STUDENT=STUDENT_ID)


 
Семен Сорокин ©   (2003-10-22 14:22) [1]

индексы есть?
попробуй использовать join.


 
Nikolay M. ©   (2003-10-22 14:33) [2]

Не скажу точно, как оно в IB/FB, но может в первом запросе возникает неоднозначность в
select * from DEAN_MOVEMENT, DEAN_STUDENT where M_STUDENT= STUDENT_ID
(кстати, а почему *?)
поскольку DEAN_STUDENT используется в основном SELECT?

И зачем во втором запросе делать в подзапросе связку по двум таблицам? Если нужно отбросить значения только из одной таблицы?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.015 c
14-8594
Blackman
2003-10-15 20:36
2003.11.03
Спокойной ночи малыши!


1-8508
dolphin1
2003-10-23 17:12
2003.11.03
Минимиальный размер


1-8451
Islander
2003-10-24 17:56
2003.11.03
Как из Dword a получить два Word a


1-8453
Denisiy
2003-10-21 17:12
2003.11.03
Напомните плз, как кавычку в строковой переменной представить?


4-8739
Miralex
2003-08-27 14:00
2003.11.03
Как получить список всех переменных чужой програмы?




   Наверх