![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
2 запроса в Firebird 1.5 [D6, XP]
DROWSY © (2010-06-12 19:43:00)В таблице Main есть два внешних ключа (D1, D2) к таблице Dep.
Объясните пожалуйста, почему запросы:
1.
select поля Main,поля Dep, поля Dep1
from Main
inner join Dep on (Main.D1 = Dep.code)
inner join Dep Dep1 on (Main1.D2 = Dep1.code)
и
2.
select поля Main,поля Dep, поля Dep1
from Main
inner join Dep Dep1 on (Main1.D2 = Dep1.code)
inner join Dep on (Main.D1 = Dep.code)
дают разные результаты?
DROWSY (2010-06-12 20:21:00) [1]Так:
select поля Main,поля Dep, поля Dep1
from Main
inner join Dep Dep1 on (Main.D1 = Dep1.code)
inner join Dep Dep2 on (Main.D2 = Dep2.code)
замечательно работает.
Ещё раз, спасибо, turbouser.
DROWSY (2010-06-12 20:18:00) [2]В случае 2), видимо, второй алиас создаётся планировщиком "по умолчанию",
а в 1)-ом соединение
inner join Dep Dep1 on (Main.D2 = Dep1.code)
вообще игнорируется.
turbouser (2010-06-12 20:01:00) [3]
> DROWSY (12.06.10 19:59) [3]
>
> Спасибо!
>
> (странно, что IBExpert, хотя бы warring не даёт)
>
Ничего странного. В FB1.5 еще было можно.
DROWSY (2010-06-12 20:01:00) [4]
> Anatoly Podgoretsky © (12.06.10 19:57) [2]
> Но он утверждает, что они были исполнены, а не запрещены.
>
Да, они исполняются, но с "нужными" результатами только 2-ой.
DROWSY (2010-06-12 19:59:00) [5]Спасибо!
(странно, что IBExpert, хотя бы warring не даёт)
Anatoly Podgoretsky (2010-06-12 19:57:00) [6]Но он утверждает, что они были исполнены, а не запрещены.
Но конечно алиасы надо использовать, только потом можно о чем то говорить. И конечно смотреть планы.
turbouser (2010-06-12 19:49:00) [7]
> DROWSY (12.06.10 19:43)
Потому что использовать алиасы надо правильно!
В FB2 вообще запретили смешивать использование запросов с алиасами и без. И это правильно.