|
Два вопроса
|
|||
---|---|---|---|
#18+
Здравствуйте! Помогите, пожалуйста, разобраться с 2 вопросами по T-SQL: 1. В чем отличие вложенных связок вида: Код: sql 1. 2. 3. 4. 5. 6.
от последовательных связок вида: Код: sql 1. 2. 3. 4. 5. 6.
и когда они нужны? 2. В запросе вида: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
в подзапросе JOIN-а t1.id сначала будет искаться среди таблиц вложенного селекта(связка t1.id = t2.id будет производиться по полю id таблицы table_x), и только если поле не найдется, то будет считаться, что t1.id это поле таблицы table_1? желаю Вам счастья ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 12:52 |
|
Два вопроса
|
|||
---|---|---|---|
#18+
Борис Гаркун, В первом случае между таблицами table1 и table2 происходит выбор данных, совпадающих в правой и левой таблице и этот набор соединяется "слева" с данными таблицы выше В втором случае на результат левого объединения таблицы x и таблицы table1 накладывается фильтр точного совпадения полученного результата с набором данных таблицы table2. В итоге часть строк из таблицы x может не попасть в результирующий набор. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 13:08 |
|
Два вопроса
|
|||
---|---|---|---|
#18+
Владислав Колосов Борис Гаркун, В первом случае между таблицами table1 и table2 происходит выбор данных, совпадающих в правой и левой таблице и этот набор соединяется "слева" с данными таблицы выше В втором случае на результат левого объединения таблицы x и таблицы table1 накладывается фильтр точного совпадения полученного результата с набором данных таблицы table2. В итоге часть строк из таблицы x может не попасть в результирующий набор. Правая и левая таблицы это table1 и table2? Во втором случае получается будут отловлены только те данные из таблицы x, для которых есть сопоставления в таблице1? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 15:23 |
|
Два вопроса
|
|||
---|---|---|---|
#18+
Борис Гаркун, да, второй запрос эквивалентен запросу Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 15:44 |
|
Два вопроса
|
|||
---|---|---|---|
#18+
Спасибо, Владислав. Осталось разобраться со 2-м вопросом... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 16:43 |
|
Два вопроса
|
|||
---|---|---|---|
#18+
Борис Гаркун Спасибо, Владислав. Осталось разобраться со 2-м вопросом... :) Подзапрос тут это отдельный запрос, который со внешним никак в данном случае не связан. Сначала сджойнятся table_2 и table_x по полю id, потом результат сджойнится с table_1 снова по полю id результата и полю id table_1. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 17:36 |
|
Два вопроса
|
|||
---|---|---|---|
#18+
fkthat Борис Гаркун Спасибо, Владислав. Осталось разобраться со 2-м вопросом... :) Подзапрос тут это отдельный запрос, который со внешним никак в данном случае не связан. Сначала сджойнятся table_2 и table_x по полю id, потом результат сджойнится с table_1 снова по полю id результата и полю id table_1. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 20:13 |
|
Два вопроса
|
|||
---|---|---|---|
#18+
andreymx почему-то мне кажется, что оптимизатор откроет скобки и получится обычный иннер джойн Да, скорее всего, так и будет, но вопрос (как я его понял) был о том, как будет себя это вести с учетом того, что алиас у двух таблиц (table_1 t1 и table_x t1) "внутри" и "снаружи" одинаковый - похоже автора именно это смущало. Я, как бы, на пальцах объяснил, что разницы никакой, что они разные, что одинаковые - "внутренний" алиас t1 просто скроет "внешний". ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2020, 20:20 |
|
|
start [/forum/topic.php?fid=46&msg=40025206&tid=1685324]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 165ms |
0 / 0 |