![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL - запрос не работает
Meson © (2003-05-19 23:45:00)Есть такой запрос:
select
t1.f1,
(select f
from (select min(f2) f
from t2) t) as f
from t1
where f1=1
этот запрос работает вполне исправно.
select
t1.f1,
(select f
from (select min(f2) f
from t2
WHERE f2=t1.f1 ) t) as f
from t1
where f1=1
А этот не хочет.
В секции WHERE пришет t1.f1 -- не известно
Кто скажет в чем дело?
Ihor Osov'yak (2003-05-21 10:38:00) [1]> Ведь должен как будто?
Должен как-будто.. Вообще-то я не с ораклов. В IB,MSSQL с такой конструкцией проблем нет. www.sql.ru - там есть форумы, сортированные по движкам, и, кажется, втч по ораклу..
Mesonbareon (2003-05-20 13:43:00) [2]База - Оракл.
Так мудрено получилось из-за того, что я все несущественное просто выбросил, дабы не заслоняло суть дела.
В реальном запросе (около 500 строк) "одиночное t" возвращает упорядоченный (по дате) список полей из которого затем извлекается самая свежая запись (... where RowNum = 1).
Разумеется запрос можно переформулировать, возможно с потерей в элегантности (читабельности) и скорости. Дело не в этом.
Вопрос в том, почему внутренний подзапрос не распознает полей из внешних по отношению к нему запросов. Ведь должен как будто?
Ihor Osov'yak (2003-05-20 00:36:00) [3]Чего-то я не вьехал.. Зачем так мудро? Какой движок? Зачем там одиночное t?
Нельзя ли попроще, к примеру
select
t1.f1,
(select min(f2)
from t2
WHERE f2=t1.f1 ) as f
from t1
where f1=1