Форум: "Основная";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
ВнизСоставить оптимальный запрос Найти похожие ветки
← →
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 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.01 c