mysql - 用于从具有不同外键的单个表中检索匹配值对的计数的 SQL 查询?

标签 mysql sql mariadb

我在 MySQL/MariaDB 查询方面遇到了令人费解的问题,其表结构如下:

事件

  • id INT(11)
  • 时间日期时间
  • 描述 VARCHAR(1000)

报告

  • id INT(11)
  • event_fk INT(11) 指事件
  • reporttemplate_fk INT(11) 指报告模板

报告模板本地化的报告模板。类型:事件前/事件后,针对每种语言

  • id INT(11)
  • 类型 VARCHAR(255)
  • 名称 VARCHAR(255)
  • 模板 VARCHAR(10000)

报告值

  • report_fk INT(11) 引用报告
  • VARCHAR(255)
  • VARCHAR(255)

有两种报告模板,一种用于before事件(所有事件都有此),一种用于after事件(仅部分事件)事件有这个)。 之前报告有数十个不同的报告值,之后报告有大约十几个报告值的子集。

问题是这样的:我如何形成一个查询,为每个事件计算reportvalue<中报告之前和之后的匹配键值对的计数/strong>-表,当事件存在两种类型的报告时?

最佳答案

类似这样的事情应该可以做到:

select
    e.id
    count(before.id),
    count(after.id)
from
    event e
    join reporttemplate before on e.id = before.event_fk and before.type = 'BEFORE'
    join reporttemplate after on e.id = after.event_fk and after.type = 'AFTER'
group by
    e.id

关于mysql - 用于从具有不同外键的单个表中检索匹配值对的计数的 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31051314/

相关文章:

MySQL 2 列不工作的百分比=NULL

mysql - MariaDB和MYSQL5.6返回不同的结果

javascript - NodeJS、MariaDB 池连接提交不起作用

php - 如何在迭代 DatePeriod 时包括今天?

php mysql插入条件判断

php - 使用 PHP 不同的对象方法从表中获取所有数据

javascript - node.js:将mysql(npm)池输出到html或jade

比较行的 SQL 语句

c# - 使用 ADO.NET SqlDataAdapter 更新单个记录

php - 在 MySQL 中选择多列的 MAX()