Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

SQL, ОБЪЕДИНЕНИЕ ТАБЛИЦ

Viki Ученик (87), на голосовании 1 год назад
Как объединить таблицы по полю user_id с помощью INNER JOIN

SELECT user_id, COUNT(user_id) OVER() AS user_count
FROM tools_shop.users
WHERE CAST(created_at AS date) BETWEEN '2020-01-01' AND '2020-01-31'
GROUP BY user_id

SELECT *
FROM tools_ shop.events
WHERE platform= 'android' AND CAST(event_time AS date) BETWEEN '2020-01-01' AND '2020-03-31'
Голосование за лучший ответ
Марк Апшо Гуру (3398) 1 год назад
Извините, женщинам не помогаем
Chromatic Scale Искусственный Интеллект (206109) 1 год назад
Вы можете объединить эти два запроса с использованием INNER JOIN таким образом:
 SELECT A.user_id, A.user_count, B.* 
FROM (
SELECT user_id, COUNT(user_id) OVER() AS user_count
FROM tools_shop.users
WHERE CAST(created_at AS date) BETWEEN '2020-01-01' AND '2020-01-31'
GROUP BY user_id
) A
INNER JOIN (
SELECT *
FROM tools_shop.events
WHERE platform= 'android' AND CAST(event_time AS date) BETWEEN '2020-01-01' AND '2020-03-31'
) B
ON A.user_id = B.user_id
В этом запросе сначала создаются два подзапроса (обозначенных как A и B), а затем выполняется их объединение по полю user_id.

Обратите внимание, что во втором изначальном запросе есть опечатка в имени схемы и таблицы ("tools_ shop.events " вместо "tools_ shop.events "), я исправил это в приведенном примере запроса.
Sergio 2.1 Оракул (67276) 1 год назад
Чтобы объединить таблицы tools_shop.users и tools_ shop.events по полю user_id с помощью INNER JOIN, вы можете использовать следующий запрос:
 SELECT u.user_id, COUNT(u.user_id) OVER() AS user_count, e.* 
FROM tools_shop.users u
INNER JOIN tools_shop.events e
ON u.user_id = e.user_id
WHERE CAST(u.created_at AS date) BETWEEN '2020-01-01' AND '2020-01-31'
AND e.platform = 'android'
AND CAST(e.event_time AS date) BETWEEN '2020-01-01' AND '2020-03-31'
GROUP BY u.user_id
В этом примере мы используем псевдонимы таблиц u и e для обозначения таблиц tools_shop.users и tools_ shop.events соответственно. Затем мы используем условие ON u.user_id = e.user_id для объединения строк из обеих таблиц по полю user_id. В результате выборки будут возвращены только те строки, для которых есть соответствующие значения user_id в обеих таблицах. Остальные условия фильтрации указываются в секции WHERE. В результате выборки будут возвращены столбцы user_id, вычисляемый столбец user_count, а также все столбцы из таблицы tools_ shop.events .
Похожие вопросы