gpt4 book ai didi

php - Mysql 在 2 个表上的内连接不起作用

转载 作者:行者123 更新时间:2023-11-29 12:37:05 24 4
gpt4 key购买 nike

我的数据库中有一个名为“联系人”的表和一个名为“ View ”的表。

在联系人表中,我有以下字段:

  • ID
  • 状态
  • 名字
  • 姓氏

状态可能是冷淡、潜在客户或丢失。

在 TableView 上,我有以下字段:

  • 用户 ID
  • 艺术观点
  • 艺术标题

这两个表之间的关系是 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),但我仍然有没有状态的用户。所以我将“ View ”表中的字段 user_id 保留为空。我如何更改这些用户的查询,以便我也可以对他们进行计数?

我尝试:SUM(CASE v.user_id WHEN ' ' THEN v.art_views ELSE 0 END) 测试,但这里没有结果。

最佳答案

您可以通过从 View 表中进行选择并加入联系人表来切换逻辑。下面的查询将使用 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

关于php - Mysql 在 2 个表上的内连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26615254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com