2个表上的Mysql内部联接don';不起作用


Mysql inner join on 2 tables don't work

我的数据库中有一个名为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