Соединение таблиц без использования inner join, как оно работает?

Объясните, пожалуйста, как работает такое соединение таблиц в запросе вместо join? Просто перечисляются таблицы. Далее в бизнес-логике к этому запросу, к блоку where могут присоединяться еще условия с and и or, поэтому, как мне сказали, здесь не подходит использование join и надо соединять таблицы именно так. Почему? Я первый раз вижу такое соединение таблиц без джойнов.

SELECT SUM(`order`.total )  as count
FROM `check`, `order`, `posinfo`
WHERE `check`.id = `order`.order_check_id
    AND `order`.canseled=false


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

Автор решения: Герман Борисов

Это устаревшая запись, эквивалентная нынешнему CROSS JOIN

SELECT * FROM a,b <=> SELECT * FROM a CROSS JOIN b

При этом SELECT * FROM a CROSS JOIN b WHERE a.id = b.id семантически эквивалентно SELECT * FROM a INNER JOIN b ON a.id = b.id

Соответственно SELECT * FROM a,b WHERE a.id = b.id даст тот же результат, что и SELECT * FROM a INNER JOIN b ON a.id = b.id

Для внутреннего соединения на самом деле не важно где условие, в ON или в WHERE, разница есть только для внешний (LEFT, RIGHT и FULL JOIN)

→ Ссылка