Напиши SQL-запрос для объединения таблиц users и subscriptions через user_id для поиска активных подписок.

Для объединения таблиц users и subscriptions через поле user_id и поиска только активных подписок используется оператор JOIN в связке с условием WHERE. Ниже приведён готовый SQL-запрос:

SELECT u.user_id, u.name, u.email, s.subscription_id, s.plan, s.status, s.start_date, s.end_date FROM users u INNER JOIN subscriptions s ON u.user_id = s.user_id WHERE s.status = ‘active’;

Разбор запроса:

1. SELECT — перечисляем нужные столбцы из обеих таблиц. Используем псевдонимы u для users и s для subscriptions, чтобы сократить запись и избежать неоднозначности при совпадающих именах столбцов.

2. FROM users u — основная таблица пользователей с псевдонимом u.

3. INNER JOIN subscriptions s ON u.user_id = s.user_id — соединяем таблицы по полю user_id. INNER JOIN возвращает только те строки, для которых есть совпадение в обеих таблицах. Если нужно вернуть всех пользователей, даже без подписок, используйте LEFT JOIN.

4. WHERE s.status = ‘active’ — фильтруем только активные подписки. Значение ‘active’ нужно заменить на то, которое реально используется в вашей базе данных (например, 1, TRUE, ‘enabled’ и т.д.).

Альтернативный вариант с фильтрацией по дате (если статус не хранится явно):

SELECT u.user_id, u.name, u.email, s.subscription_id, s.plan, s.start_date, s.end_date FROM users u INNER JOIN subscriptions s ON u.user_id = s.user_id WHERE s.end_date >= CURRENT_DATE;

Этот вариант полезен, когда активность подписки определяется не полем status, а датой окончания.

Строка для CSV:
user_id,name,email,subscription_id,plan,status,start_date,end_date

Эта строка является заголовком CSV-файла, соответствующим столбцам из SELECT-запроса. При экспорте данных из СУБД (например, через psql, MySQL Workbench или Python + pandas) именно такой порядок столбцов будет использоваться в итоговом файле.

Рекомендации:
— Добавьте индекс на поле user_id в таблице subscriptions для ускорения JOIN.
— Если таблицы большие, рассмотрите использование EXPLAIN ANALYZE для анализа плана выполнения запроса.
— При необходимости добавьте ORDER BY u.user_id для сортировки результатов.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.