Как называется этот тип объединения, когда объединения квалифицируются в конце? - PullRequest
0 голосов
/ 22 января 2019

Я работаю с некоторыми представлениями в старой системе управления персоналом, которая часто объединяет несколько объединений, а часть объединений «ON» не приходит до конца. Зачем кому-то делать это таким образом, и есть ли в этом какое-то преимущество? Я нахожу это довольно запутанным, когда в нем есть большое количество объединений. Я не мог достаточно точно описать ситуацию в веб-поиске, чтобы помочь мне.

SELECT
ExportTypeIdNo = et.ExportTypeIdNo,
ExportDataStoredProcedureIdNo = et.ExportDataStoredProcedureIdNo,
ExportDataStoredProcedure = sp1.Name,
ExportFileStoredProcedureIdNo = et.ExportFileStoredProcedureIdNo,
ExportFileStoredProcedure = sp2.Name
FROM tSTORED_PROCEDURES sp2 INNER JOIN
    (tSTORED_PROCEDURES sp1 INNER JOIN
       (tEXPORT_TYPES et INNER JOIN tTYPE_CODES tc
       ON et.ReportingTreeIdNo = tc.TypeCodeIdNo)
    ON sp1.StoredProcedureIdNo = et.ExportDataStoredProcedureIdNo)
ON sp2.StoredProcedureIdNo = et.ExportFileStoredProcedureIdNo

Этот код является лишь примером того, как выглядит этот тип объединения.

1 Ответ

0 голосов
/ 22 января 2019

Нет веских причин для этого.С inner join любой порядок join s эквивалентен.Почти все согласятся с тем, что следовать и поддерживать следующее проще:

FROM tEXPORT_TYPES et INNER JOIN
     tTYPE_CODES tc
     ON et.ReportingTreeIdNo = tc.TypeCodeIdNo INNER JOIN
     tSTORED_PROCEDURES sp1
     ON sp1.StoredProcedureIdNo = et.ExportDataStoredProcedureIdNo INNER JOIN
     tSTORED_PROCEDURES sp2
     ON sp2.StoredProcedureIdNo = et.ExportFileStoredProcedureIdNo

Существуют некоторые загадочные ситуации, когда перестановка внешних объединений не совсем эквивалентна.В целом, однако, inner join s, за которыми следует left join s, достаточно для почти всех запросов, которые я пишу.

Что касается того, почему кто-то написал бы join s таким образом?Я могу только строить догадки.Моя наиболее вероятная причина в том, что они использовали , s в предложении from и просто стали предпочитать ссылаться на все таблицы перед условиями, связывающими их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...