Никак не могу разобраться, зачем конкретно нужна конструкция LEFT (RIGHT и INNER) JOIN в SELECT'e? Почему в следующем примере используется условия ON table1.id=table2.id и WHERE table2.id IS NULL ? Нельзя ли JOIN перенести в WHERE? mysql> SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL; Этот пример находит все строки в таблице table1 с величиной id, которая не присутствует в таблице table2 (т.е. все строки в table1, для которых нет соответствующих строк в table2). Конечно, это предполагает, что table2.id объявлен как NOT NULL. Кто может "на пальцах" объяснить кто же такой этот JOIN? Почему в синтаксисе SQL можно написать «SELECT * FROM table1, table2» (INNER JOIN), но нельзя написать «SELECT * FROM table1 LEFT JOIN table2»? (При этом допустим запрос: «SELECT * FROM table1 LEFT JOIN table2 ON table1.a = table2.b»)
в join-e можешь прописать не обязательные связки. Тоесть если связка есть он получит и поля связанной таблице нет, то просто получит не все.