![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
особенности работы left join
jack128 © (2006-01-18 17:20:00)День добрый.
FB1.5
есть запрос
select t1.id as t1_id, t2.id as t2_id
from table1
left join table2 t2 on t1.id = t2.t1_id -- обычная связь по внешнему ключу.
одной записи в table1 может соответствовать несколько записей в table2
скажите есть ли ГАРАНТИЯ, что в результате записи с одинаковым table1.id будут идти подряд:
t1_id t2_id
1 1
1 2 // сначала все записи с t1_id = 1
1 3
9 30 // потом например t1_id = 9
9 40
2 4
2 6
3 7
4 45
4 78
Fay (2006-01-19 10:56:00) [21]2 jack128 © (19.01.06 10:50) [9]
Гарантию даёт только order by. Остальное - ересь.
jack128 (2006-01-19 10:50:00) [22]DSKalugin © (18.01.06 18:34) [8]
по поводу t2.t1_id а t1_id вообще есть у table2
есть естественно. в запросе четко написано on t1.id = t2.t1_id
DSKalugin © (18.01.06 18:34) [8]
t1_id это t1.id судя по select t1.id as t1_id
а какое имеет значение, что за псевдонимы я полям присвоил??
Johnmen © (18.01.06 17:45) [7]
Ну вот мне тоже так показалось, потому я и решил уточнить.
DSKalugin (2006-01-18 18:34:00) [23]
> select t1.id as t1_id, t2.id as t2_id
> from table1
> left join table2 t2 on t1.id = t2.t1_id -- обычная связь
> по внешнему ключу.
по поводу t2.t1_idа t1_id вообще есть у table2или же
t1_id это t1.id судя по select t1.id as t1_id
?
Johnmen (2006-01-18 17:45:00) [24]Поясню.
При таком соединении сначала выполняется обход "внешней" таблицы, в нашем случае Table1. И для каждой записи ищется соответствующие в Table2.
Поскольку Table1.ID уникален и обход "внешней" делается 1 раз, то это и гарантирует сабж.
Johnmen (2006-01-18 17:41:00) [25]А я так думаю, причем почти уверен, что гарантия есть.
jack128 (2006-01-18 17:40:00) [26]Sergey13 © (18.01.06 17:28) [4]
гм. Уточню, меня не интересует неявные вещи, которые могут измениться в будущих версиях сервера. Только гарантированные сортировки!
Sergey13 (2006-01-18 17:28:00) [27]2[2] Курдль © (18.01.06 17:23)
Вроде еще Group By вызывает неявную сортировку.
jack128 (2006-01-18 17:27:00) [28]Ну сортировка, так сортировка.
Спасибо.
Sergey13 (2006-01-18 17:23:00) [29]Нет. Порядок записей гарантируется только сортировкой.
Курдль (2006-01-18 17:23:00) [30]
> что в результате записи с одинаковым table1.id будут идти
> подряд:
Никакая СУБД не дает никакой гарантии о порядке записей, возвращенных запросом, если в нем не содержится... order by ...:-)