I've been using this for years, so it is high time to understand it fully. Suppose a query like this:
SELECT
*
FROM a
LEFT JOIN b ON foo...
LEFT JOIN c ON bar...
The documentation tells us that
T1 { [INNER] | { LEFT | RIGHT | FULL } [OUTER] } JOIN T2 ON boolean_expression
LEFT OUTER JOIN
First, an inner join is performed. Then, for each row in T1 that does not satisfy the join condition with any row in T2, a joined row is added with null values in columns of T2. Thus, the joined table always has at least one row for each row in T1.
The question is simple: what is T1
in this case? Is it a
? Or is it a LEFT JOIN b ON foo
? (or, is it the same?)