我的数据库中有一个名为contacts的表和一个名为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),但我仍然有没有状态的用户。所以我将“views”中的字段user_id留空。如何更改这些用户的查询,以便我也可以计算它们?
我试过:SUM(CASE v.user_id WHEN''那么v.art_views ELSE 0 END)测试, 但这里没有结果。
答案 0 :(得分:1)
您可以通过从views表中选择并加入de contacts表来切换逻辑。 下面的查询将使用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
答案 1 :(得分:0)
尝试
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