我在 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/