У меня есть таблица в моей базе данных с именем контакты и таблица с именем views.
На таблице контактов у меня есть следующие поля:
Статус может быть холодным, перспективным или потерянным.
На табличных представлениях у меня есть следующие поля:
Отношение между этими двумя таблицами — id и user_id.
Мне нужен запрос, чтобы создать новую HTML-таблицу со следующими столбцами:
Теперь у меня есть следующий запрос (ОБНОВЛЕНО):
SELECT
v.art_title,
SUM(CASE c.status WHEN 'cold' THEN v.art_views ELSE 0 END) cold,
SUM(CASE c.status WHEN 'prospect' THEN v.art_views ELSE 0 END) prospect,
SUM(CASE c.status WHEN 'lost' THEN v.art_views ELSE 0 END) lost
FROM views v
JOIN contacts c ON v.user_id = c.id
GROUP BY v.art_title
Этот запрос работает сейчас (спасибо Gerv), но у меня все еще есть пользователи, у которых нет статуса. Поэтому я оставляю поле user_id в таблице ‘views’ пустым. Как я могу изменить запрос для этих пользователей, чтобы я тоже мог их посчитать?
Я пытался: SUM (CASE v.user_id WHEN » THEN v.art_views ELSE 0 END),
но без результата здесь.
Вы можете переключить логику, выбрав из таблицы представлений и присоединившись к таблице контактов.
Внизу запроса будет изменен статус с предложением CASE
SELECT
v.art_title,
SUM(CASE c.status WHEN 'cold' THEN v.art_views ELSE 0 END) cold,
SUM(CASE c.status WHEN 'prospect' THEN v.art_views ELSE 0 END) prospect,
SUM(CASE c.status WHEN 'lost' THEN v.art_views ELSE 0 END) lost,
SUM(CASE c.status WHEN NULL THEN v.art_views ELSE 0 END) no_user
FROM views v
LEFT JOIN contacts c ON v.user_id = c.id
GROUP BY v.art_title
ORDER BY (cold+lost+prospect+no_user) DESC
LIMIT 10
Пытаться
SELECT art_title, SUM(art_views), status FROM contacts AS c INNER JOIN views AS v ON v.user_id = c.id GROUP BY v.art_title, c.status