Существует несколько обсуждений StackOverflow коммутативности соединений, таких как 1 , 2 , 3 и 4 .Это становится довольно сложно, и я не думаю, что кто-то из них отвечает на мой вопрос здесь.
Я часто замечал, что когда я помещаю SQL для запроса в Access, Access портит порядок моих объединений.и даже изменения LEFT
присоединяются к RIGHT
единицам.Я обычно пишу свои внешние объединения как LEFT
s, логически выстраивая последовательность объединенных таблиц, поэтому мне не нравится, когда Access портит это.Но теперь я заметил разницу в том, как запрос представлен в режиме конструктора, и я хочу знать, является ли разница существенной.
Вот три запроса:
Query1
SELECT Table1.ID_Table1
FROM Table2 RIGHT JOIN (Table1 LEFT JOIN Table12
ON Table1.ID_Table1 = Table12.ID_Table1) ON Table2.ID_Table2 = Table12.ID_Table2;
Query2
SELECT Table1.ID_Table1
FROM Table1 LEFT JOIN (Table2 RIGHT JOIN Table12
ON Table2.ID_Table2 = Table12.ID_Table2) ON Table1.ID_Table1 = Table12.ID_Table1;
Query3
SELECT Table1.ID_Table1
FROM Table1 LEFT JOIN (Table12 LEFT JOIN Table2
ON Table12.ID_Table2 = Table2.ID_Table2) ON Table1.ID_Table1 = Table12.ID_Table1;
Я предпочитаю Query3, потому что он имеет логический порядок, который я упомянул.
Когда я вводил эти запросы какSQL, Access изменил код Query2, чтобы быть таким же, как Query1, и он не изменил код Query1 или Query3.Когда три запроса выполняются (с очень простыми данными, поэтому не являются окончательными), они все дают одинаковый результат.В представлении «Дизайн» Query1 и Query2 выглядят одинаково, что хорошо, поскольку Access преобразовал Query2 в Query1.Query3 выглядит почти так же, за исключением того, что отношение между Table2 и Table12, которое представлено в представлении Query1 и Query2, не представлено в представлении Query3.
Итак, мой вопрос в том, эквивалентен ли Query3 запросам Query1 и Query2, чтобы можно было игнорировать потерю представления табличных отношений в представлении конструктора или существует ли эксплуатационная разница в запросах?Если есть разница, существует ли руководящий принцип для упорядочения соединений?