Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

особенности работы left join


Страницы:   1 2

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 ... :-)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо