Я использовал это для лет, так что пришло время его полностью понять. Предположим, что запрос, как это:Несколько LEFT JOINs - что такое «левая» таблица?
SELECT
*
FROM a
LEFT JOIN b ON foo...
LEFT JOIN c ON bar...
documentation говорит нам, что
T1 { [INNER] | { LEFT | RIGHT | FULL } [OUTER] } JOIN T2 ON boolean_expression
LEFT OUTER JOIN
Во-первых, внутреннее соединение выполняется. Затем для каждой строки в T1, которая не удовлетворяет условию объединения с любой строкой в T2, объединенная строка добавляется с нулевыми значениями в столбцах T2. Таким образом, объединенная таблица всегда имеет по крайней мере одну строку для каждой строки в T1.
Вопрос прост: что такое T1
в этом случае? Это a
? Или это a LEFT JOIN b ON foo
? (или, то же самое?)
Это зависит от того, как вы присоединяетесь к данным (например, foo и bars на вашем примере. Например, если в заявлении «... JOIN c ON bar ...» условия используют таблицы a и b , это будет JOIN b ON foo. –
'(левое соединение b) left join c', то есть сначала' a' является левой таблицей, тогда '(левое соединение b)' является следующей левой таблицей. – jarlh
@ jarlh, если вы напишете это как ответ и дадите ссылки, я его приму. – vektor