Задать вопрос
@nop71

Имеет ли значение порядок связывания таблиц левым соединением?

Предположим есть три таблицы: A, B, C
Будет ли разница в результате между двумя вариантами:

1 вариант: вначале таблица A соединяется левым соединением с таблицей B. Потом результат первого соединения соединяется с таблицей C левым соединением.

2 вариант: вначале таблица B соединяется левым соединением с таблицей C. Потом таблица A соединяется с результатом первого соединения левым соединением.

Предполагаем, что в обоих вариантах условия связи таблиц одни и те же.
Есть ли какое-то правило, которое определяет порядок связывания таблиц?
  • Вопрос задан
  • 87 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
Будет ли разница в результате между двумя вариантами

Да. См. fiddle
CREATE TABLE a SELECT 'a' x UNION SELECT 'b';
CREATE TABLE b SELECT 'a' x UNION SELECT 'c';
CREATE TABLE c SELECT 'b' x UNION SELECT 'c';

select a.*, b.*, c.*
from a left join b using (x) left join c using (x)

x	x	x
a	a	null
b	null	b

select a.*, b.*, c.*
from a left join (b left join c using (x))  using (x)

x	x	x
a	a	null
b	null	null


Есть ли какое-то правило, которое определяет порядок связывания таблиц?

Да. Порядок связывания определяется требуемой логикой.

PS. В качестве самостоятельного задания - найди истинную причину разницы.

PPS. При абсолютной эквивалентности обеих форм - разницы нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы