Соединение таблиц без использования 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)