我的数据库中有一个名为contacts的表和一个名为主view的表。
在表格联系人上,我有以下字段:
- id
- 状态
- first_name
- last_name
状态可能是冷的、有前景的或丢失的。
在表视图上,我有以下字段:
- user_id
- 艺术视图(_V)
- 艺术标题
这两个表之间的关系是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),但我仍然有一些用户没有状态。因此,我将表'views'中的字段user_id留空。我如何更改这些用户的查询,以便也可以对他们进行计数?
我尝试: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