Цель: создать запрос, который вычисляет соотношение идентификаторов, которые имеют / не имеют определенный атрибут.
Таблица 1: Поля событий: event_id, event_name, user_id Поле event_id - уникальный ключ / индекс Поле event_name имеет 3 потенциальных значения, одно из которых проверяется. Поле user_id является внешним ключом из Таблицы 2
Таблица 2: Поля пользователей: id (и длинный список других атрибутов, которые не имеют отношения)
Чтобы получить список user_ids с уточняющий атрибут, я создал следующее:
SELECT DISTINCT events.user_id AS viewing_ids
FROM events
WHERE event_name = 'view_user_profile'
Как и следовало ожидать, это предоставляет список пользователей, которым соответствует соответствующее имя_события, связанное с их идентификатором пользователя
Следующая часть - это то, где я запутаться. Да, я мог бы СЧИТАТЬ (ОТЛИЧИТЬ выбор, чтобы получить идентификаторы подсчета, которые имеют атрибут 'view_user_profile', но который дает только половину ответа. Что мне нужно сделать, так это соединить этот список с полным списком user_id от пользователей таблицы, а затем определить, когда идентификатор существует или не существует.
Я думаю, что начальный SELECT должен быть
SELECT
(CASE WHEN viewers IS NULL THEN false
ELSE true END) AS has_viewed_profile
, COUNT(user_id) AS users
FROM
(SELECT DISTINCT events.user_id AS viewing_ids
FROM events
WHERE event_name = 'view_user_profile') viewers
LEFT JOIN
users
ON
??? = users.id
Здесь я теряюсь, у меня нет имени столбца для зрителей ...