Я определенно всегда делаю свои СОЕДИНЕНИЯ (любого типа) в моем предложении FROM.
То, как я их делаю, таково:
SELECT fields
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.t1_id
INNER JOIN table3 t3 ON t1.id = t3.t1_id
AND
t2.id = t3.t2_id
На самом деле, я вообще пойдуна шаг дальше и перенесите всю мою ограничивающую логику из предложения WHERE в предложение FROM, потому что это (по крайней мере, в MS SQL) загружает ограничение в начале, а это означает, что он уменьшает размер набора записей раньше в конструкции запроса (Я видел документацию, которая противоречит этому, но мои планы выполнения неизменно более эффективны, когда я делаю это таким образом).
Например, если я хотел выбрать только вещи в приведенном выше запросе, где t3.id =3, вы могли бы, но в предложении WHERE, или вы могли бы сделать это следующим образом:
SELECT fields
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.t1_id
INNER JOIN table3 t3 ON t1.id = t3.t1_id
AND
t2.id = t3.t2_id
AND
t3.id = 3
Лично я нахожу, что запросы, изложенные таким образом, очень удобочитаемы и удобны в обслуживании, но это, безусловно, вопросличных предпочтений, так что YMMV.
Несмотря на это, я надеюсь, что это помогает.