-
USING (nomedocampo) é uma forma abreviada de dizer ON table1.fieldname =table2.fieldname.
-
SQL não define a 'ordem' em que JOINS são feitos porque não é a natureza da linguagem. Obviamente, uma ordem deve ser especificada na instrução, mas um INNER JOIN pode ser considerado comutativo:você pode listá-los em qualquer ordem e obterá os mesmos resultados.
Dito isso, ao construir um SELECT ... JOIN, particularmente um que inclui LEFT JOINs, descobri que faz sentido considerar o terceiro JOIN como unindo a nova tabela aos resultados do primeiro JOIN, o quarto JOIN como unindo o resultados do segundo JOIN, e assim por diante.
Mais raramente, a ordem especificada pode influenciar o comportamento do otimizador de consultas, devido à forma como influencia as heurísticas.
-
Não. A forma como a consulta é montada, requer que empresas e usuários tenham um companyid, jobs tenha um userid e um jobid e useraccounts tenha um userid. No entanto, apenas uma das empresas ou o usuário precisa de um ID de usuário para que o JOIN funcione.
-
A cláusula WHERE está filtrando todo o resultado -- ou seja, todas as colunas JOINed -- usando uma coluna fornecida pela tabela de jobs.