MySQL group 和 sum 连接表

标签 mysql

我在使用 MySQL 时遇到了一个非常棘手的问题。

我有两个具有一对多关系的表(在相关的列下方)

表 A(事件):

id | channel_type | date

表 B(预算):

id | campaign_id | budget

我需要单个查询来获取以下结果:

  • 按 channel 类型统计的事件数
  • 与找到的广告系列相关的所有预算总和。

我需要按事件表中的列过滤结果(例如 WHERE campaigns.date > '2014-05-01')

我试过以下方法:

SELECT channel_type, COUNT(*) cnt, 
   (SELECT SUM(budget) FROM budgets WHERE budgets.campaign_id = campaigns.id)) 
       as budget 
FROM campaigns 
WHERE campaigns.date >= 'some-value' 
    AND [more conditions] 
GROUP BY campaigns.channel_type

但这当然会惨遭失败,因为 GROUP 我只获得了 channel_type 的第一个 campaigns.id 结果。

任何提示(和解决方案)将不胜感激!

TIA

最佳答案

  1. 使用 GROUP BY campain_id 从预算表中获取总预算。这将是子查询。命名它。例如,A。
  2. 现在使用 GROUP BY channel_type 和 WHERE date>='some-value' 从事件中获取 ID 总数。
  3. 在最终查询中使用步骤 2 和 1(子查询将充当表),您将获得结果。 您可以发布架构,然后我可以检查。

关于MySQL group 和 sum 连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25532473/

相关文章:

mysql - Mysql中如何将表与空表连接起来

c# - 以 order by 作为参数的 SQL Select 语句

php - 如何仅显示 INNER JOIN 中的部分字段

mysql - 为什么这个 MySQL 查询没有自然地对我的行值进行排序?

php - 有没有办法在 UPDATE 查询中将 PDO 与动态列名一起使用?

php - Codeigniter - 导出到 CSV 问题

mysql - 删除 MySQL 中最旧的 10 行

不会执行的 SQL 查询

mysql - 无法使用 pymysql 将数据插入数据库,我的语法有什么问题?

php - 查询列出表中出现了多少个字符串?