php - 从第一个表中选择所有内容,计算第二个表中 ID 的实例数

标签 php mysql

我有两个表,第一个表包含具有唯一 ID 和关键字的数字,第二个表包含通过唯一 ID(在 CAMPAIGN 列中)链接回第一个表的数字。我想从第一个表中获取每个数字,并计算它们的唯一 ID(在 CAMPAIGN 中)在第二个表中出现的次数(即:每个数字附加了多少个关键字)。

         CAMPAIGNS                                   SUBSCRIBERS
----------------------------------      --------------------------------------
ID    |    NUMBER    |  KEYWORD  |      | ID    |   NUMBER     |   CAMPAIGN  |
----------------------------------      --------------------------------------
1     |  +1222222222 |   pizza   |      |  22   | 555-333-222  |     2       |
----------------------------------      --------------------------------------
2     |  +1222222222 |   burger  |      |  21   | 222-333-222  |     2       |
----------------------------------      --------------------------------------
3     |  +1444444444 |    pie    |      |  33   | 333-111-111  |     1       |
----------------------------------
4     |  +1111111111 |  chicken  |

我需要的结果是:

----------------------------------------
      NUMBER      |  KEYWORD   | COUNT |
----------------------------------------
    +1222222222   |   pizza    |   1   |
----------------------------------------
    +1222222222   |   burger   |   2   |
----------------------------------------
    +1444444444   |    pie     |   0   |
----------------------------------------
    +1111111111   |   chicken  |   0   |

我不太熟悉JOINUNION所以我一直在尝试和阅读文档,但我不太清楚如何实现 COUNT和他们在一起。

这是我到目前为止所拥有的,但每次我尝试添加 COUNT函数我收到错误并且无法弄清楚:

SELECT * FROM `campaigns` LEFT JOIN `subscribers` ON `campaigns`.id = `subscribers`.campaign;

编辑 下面发布的查询有效,但它排除了计数为零的其他广告事件

SELECT c.number,c.id,c.keyword,COUNT(s.id) AS count FROM campaigns AS c LEFT JOIN subscribers AS s ON c.id = s.campaign GROUP BY s.campaign ORDER BY c.id ASC

最佳答案

SELECT c.number, c.id, c.keyword, ISNULL(s.count,0) AS count
FROM campaigns AS c
LEFT JOIN (
  SELECT Campaign, COUNT(*) AS count
  FROM Subscribers
  GROUP BY Campaign
) AS s
ON c.id = s.Campaign
ORDER BY c.id ASC

关于php - 从第一个表中选择所有内容,计算第二个表中 ID 的实例数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14088172/

相关文章:

php - 有没有更好的方法使用 JSON 或其他方式上传记录集?

php 带循环的多重插入

java - JAVA JDBC 如何根据两列的条件从表中删除?

php - 为什么多个场景在 Yii 中不起作用?

php - 如何修复 CakePHP 中的 "Error: The view for SrcController::view() was not found."?

mysql - 设置旧值 = 旧值 + 新值 ON DUPLICATE KEY

php - Mysql:选择指定点之间的所有数据

php - CakePHP 嵌套两个选择查询

php - 如果函数同时包含 return 和 yield,为什么 php 会返回一个空的生成器?

php - Laravel 在动态导航栏上显示产品页面链接