Is my JOIN syntax not valid? And have I understood JOIN correctly?
The = sign represents the symmetric equal operator. It does not matter in which order the to sides are mentioned, they are still equal.

As for the LEFT and RIGHT JOIN, the table order is important here. As you stated correctly, it is:

...FROM LeftTable LEFT JOIN RightTable ON...

...FROM LeftTable RIGHT JOIN RightTable ON...


The LEFT JOIN returns all rows of the LeftTable regardless of a match, the RIGHT JOIN returns all rows of the RightTable regardless of a match.

For more information on how JOINs work, check out my article series here: http://sqlity.net/en/1146/a-join-a-day-introduction/

It is written for Microsoft SQL Server but most of the concepts are RDBMS independent.