powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Порядок соединения таблицы
6 сообщений из 6, страница 1 из 1
Порядок соединения таблицы
    #36465187
ASFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Как определяется порядок соединений таблиц в запросах типа
Код: plaintext
table1 inner join table2 left join table3
Потому что результаты запросов
Код: plaintext
(table1 inner join table2) left join table3
и
Код: plaintext
table1 inner join (table2 left join table3)
могут различаться...
Может быть, есть какой-то приоритет операций, как умножение и сложение?
...
Рейтинг: 0 / 0
Порядок соединения таблицы
    #36465413
aleksandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASFK,

Все делается по порядку, который определяется положением ON. Например,
Код: plaintext
1.
2.
3.
4.
5.
6.
select *
  from t0
    join t1
      on ...
    join t2
      on ...
будет соединять сначала t0 с t1, потом результат соединения с t2. А вот
Код: plaintext
1.
2.
3.
4.
5.
6.
select *
  from t0
    join t1
      join t2
        on ...
      on ...
будет соединять сначала t1 с t2, а потом t0 с результатом соединения t1 и t2.

Как-то так...
...
Рейтинг: 0 / 0
Порядок соединения таблицы
    #36465435
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASFKДобрый день.

Как определяется порядок соединений таблиц в запросах типа
Код: plaintext
table1 inner join table2 left join table3
Потому что результаты запросов
Код: plaintext
(table1 inner join table2) left join table3
и
Код: plaintext
table1 inner join (table2 left join table3)
могут различаться...
Может быть, есть какой-то приоритет операций, как умножение и сложение?
Пример можете привести?

aleksandyASFK,

Все делается по порядку, который определяется положением ON.

Не все.
...
Рейтинг: 0 / 0
Порядок соединения таблицы
    #36466744
ASFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|ASFKДобрый день.

Как определяется порядок соединений таблиц в запросах типа
Код: plaintext
table1 inner join table2 left join table3
Потому что результаты запросов
Код: plaintext
(table1 inner join table2) left join table3
и
Код: plaintext
table1 inner join (table2 left join table3)
могут различаться...
Может быть, есть какой-то приоритет операций, как умножение и сложение?
Пример можете привести?

aleksandyASFK,

Все делается по порядку, который определяется положением ON.

Не все.
table1 left join table2 on ... inner join table3 on...
если поставить скобки так: (table1 left join table2 on ...) inner join table3 on...
то результаты запроса могут быть пустыми, если соединение таблиц в скобках не связано с table3 по какому-то условию (пример привести легко).
Если же наоборот поставить скобки table1 left join (table2 inner join table3 on...) on ...
то результат запроса заведомо непустой (содержит строки table1.

В реаьлной ситуации мне приходится объединять штук по 10 таблиц - некоторые как left join, другие inner join. Я хочу разобраться, в каком случае мне надо ставить скобки - да и просто, как вообще происходит выбор порядка соединения.
...
Рейтинг: 0 / 0
Порядок соединения таблицы
    #36467306
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что написано в on?
...
Рейтинг: 0 / 0
Порядок соединения таблицы
    #36467333
ASFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex-lsа что написано в on?

Код: plaintext
1.
2.
3.
4.
select * from 
    table1 left join table2 
      on table1.key1 = table2.key1
    inner join table3
      on table2.key2 = table3.key2

Если сначала выполнится соединение table2 с table3, а только потом начнётся left join, то строки в результате заведомо будут (как минимум строки из table1).
Если же сначала выполняется left join, то затем может получиться так, что совпадений по key2 просто нет, тогда результат будет пустой (0 строк).
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Порядок соединения таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]