разница между ними ?
вот смотри есть запрос который ты мне сегодня помог составить
SELECT u1.*, ua1.*
FROM users u1
join users_auth ua1 ON ua1.user_id = u1.id
join users u2 ON u2.id != u1.id
join users_auth ua2 ON ua2.user_id = u2.id
WHERE ua1.user_agent = ua2.user_agent
AND ua1.langs = ua2.langs
GROUP BY u1.id ORDER BY ua1.user_agent, ua1.langs
И есть другой запрос который подсказали
SELECT u0.username, u1.*
FROM users_auth AS u1, users_auth AS u2
LEFT join users AS u0
on u0.id = u2.user_id
WHERE u1.user_agent = u2.user_agent
AND u1.langs = u2.langs
AND u1.id != u2.id
ORDER BY u2.user_agent,u2.langs;
Попытаюсь объяснить в чем разница между ними.
Пример 1.
Как я думал до этого
1 запрос берет все записи FROM users u1
Далее берет уже и добавляет данные по joinам, не просто все записи а которые поподают под ON в join
join users_auth ua1 ON ua1.user_id = u1.id
join users u2 ON u2.id != u1.id
join users_auth ua2 ON ua2.user_id = u2.id
после чего через where отсекаем не нужное.
Далее сортируем
Пример 2.
2 запрос работает так
Берем все записи из таблицы FROM users_auth AS u1
Далее берем все записи users_auth AS u2 и подгоняем к ним через left join
LEFT join users AS u0
on u0.id = u2.user_id
Далее через where отсекаем не нужно и сортируем.
Может я вообще не верно рассуждаю, если не верно то в чем не верно и как это работает и какой запрос лучше и в чем отличие ???
Что это вообще такое FROM users_auth AS u1, users_auth AS u2 через запятую таблицы пречислять или это тот же самый join в движке как мне подсказали, тогда в чем между ними разница ?
Очень благодарен заранее.
Второй запрос просто не совсем корректный, но не сильно, и записан не в канонической форме, так можно сказать. Там перемешаны ANSI и non-ANSI JOIN-ы. И LEFT JOIN тут не нужен, его не должно быть (но с ним тоже будет работать)
Что это вообще такое FROM users_auth AS u1, users_auth AS u2 через запятую таблицы пречислять или это тот же самый join в движке как мне подсказали, тогда в чем между ними разница ? Это и есть non-ANSI JOIN. Устаревшая конструкция, которую не нужно применять и тем более мешать с ANSI JOIN в одном запросе...
Все размышления о том, как какой запрос работает, бредовые, ибо не верны в корне. Ты не можешь вообще сказать, как он работает.
Обсуждают сегодня