Для чего пишут во FROM несколько таблиц?

Объясните мне в чем смысл когда пишут в запросе select * from table1, table2? При этом для второй таблицы все равно же пишут условия связи с первой. Почему ее просто не приджойнить? Это выглядит намного логичнее и понятнее. По моему во from всегда должна быть одна таблица, а остальные джойниться.


Ответы (2 шт):

Автор решения: chagins

Это называется неявное соединение. Просто допустимый вариант соединения. Когда я начал писать много запросов под oracle - переехал именно на такой вариант. По моему мнению данный способ удобней. Например left join с ограничением на 2-й таблице под oracle:

    select *
    from   table1,
           table2
    where  table1.id = table2.id(+)
    and     table2.col1(+) = 10;      
→ Ссылка
Автор решения: Кирилл Новгородцев

Запрос SELECT * FROM table1, table2 является примером использования неявного соединения (implicit join) или декартова произведения (cross join). В этом случае каждая строка из table1 будет комбинирована с каждой строкой из table2. Это приведет к созданию множества строк в результирующем наборе данных, равного произведению числа строк в table1 и table2.

Эквивалентом этого запроса с использованием явного оператора CROSS JOIN в MySQL будет следующий запрос:

SELECT * FROM table1
CROSS JOIN table2;

Без дополнительного условия, такой запрос не имеет большого смысла. Другими словами, ответ на ваш вопрос находится во второй части запроса, условиях.

→ Ссылка