【发布时间】:2016-08-09 10:53:12
【问题描述】:
以下 mySQL 查询从 alerts_data 和 alerts_list 两个表中获取数据。第一个表包含警报的数据,第二个表包含警报的描述。所以在alerts_data 中有多行具有相同的alerts_data_id 与alerts_list 的alerts_id 相同。
我想要实现的是显示这样的东西
alert number 51, 5 clicked , 2 closed
alert number 57, 13 clicked, 3 closed, 8 waiting
使用 mySQL 或 PHP(我不知道我是否可以通过普通的 mySQL 得到这个)
所以目前据我所知,我无法在一行中显示警报 51 的数据,但由于 alerts_data_status 不同,我必须为每个显示 3 行。
我该怎么做?
SELECT COUNT( alerts_data_id ) AS total, alerts_data_id, alerts_data_status, alerts_list.alerts_title
FROM alerts_data
JOIN alerts_list ON
alerts_data.alerts_data_id = alerts_list.alerts_id
GROUP BY alerts_data_id, alerts_data_status
//输出
total - alerts_data_id - alerts_data_status - alerts_title
5 - 51 - clicked - alert number 51
2 - 52 - closed - alert number 51
13 - 57 - clicked - alert number 57
3 - 57 - waiting - alert number 57
8 - 57 waiting - alert number 57
注意:警报编号只是示例,可以是任意编号
// 警报数据
id - alerts_data_id - alerts_data_status
// alerts_list
alerts_id - alerts_name - alerts_text
这是一个 sqlfiddle:http://sqlfiddle.com/#!9/c70c2/1
【问题讨论】:
-
你能分享示例 sql 转储吗?如果没有,您可以同时使用多个选择,例如; select count(),(select count() from alert_list al where al.alert_data_id=ad.id)
-
@merdincz 嗨,我上面添加的输出是实际输出。
-
@merdincz 我现在包含了两个表的结构。谢谢
标签: php mysql aggregate-functions