gpt4 book ai didi

php - 使用 MySQL 按月为 HighCharts 格式化 JSON 数据

转载 作者:可可西里 更新时间:2023-11-01 07:08:05 25 4
gpt4 key购买 nike

有两个表。第一张表显示了一名护士手下的孕妇人数。请记住,一位医生手下有很多护士。每个孕妇都映射到一个护士,每个护士都映射到一个医生。所以层次结构是

孕妇-->护士-->医生 .

现在,每位孕妇都有一个登记日期。

第二张表显示了护士到医生的映射。

现在,我的查询应该按月(从 1 月到 12 月)为每个医生获取医生的详细信息和登记的孕妇人数。所以我的最终结果应该是下面应用的 JSON 格式。 HighCharts 需要这种格式。

如果某个月没有孕妇,它应该返回 0

[{
name: 'Doctor ID',
data: [7.0(Jan), 6.9(Feb), 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6(Dec)],

name: 'Doctor ID 2',
data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
}, {
name: 'Doctor Id 3',
data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
}]

我已经尝试了以下查询,但是当涉及到月份时我无法创建结构。

SELECT preg_reg_other.preg_id,nurse_dets.doctor_id,preg_reg_other.reg_date
from preg_reg_other,nurse_dets
where preg_reg_other.nurse_id = nurse_dets.nurse_id
and preg_reg_other.reg_date is not null
and nurse_dets.doctor_id= 1031
order by preg_reg_other.reg_date asc

编辑

两个表如下

表 1:nurse_dets

nurse_id  population  doctor_id nurse_name

表 2:preg_reg_other

preg_id  nurse_id  reg_date  

最佳答案

我会这样做:

对每个医生做这样的查询:

/* get all pregrant women for a doctor, group by month and count records */
SELECT MONTH( p.reg_date ), COUNT(*)
FROM nurse_dets n
INNER JOIN preg_reg_other p
ON n.nurse_id = p.nurse_id
WHERE n.doctor_id = 1301
AND n.reg_date IS NOT NULL
GROUP BY MONTH( p.reg_date )
ORDER BY p.reg_date ASC

这将为您提供每个月与 ID 为 1301 的医生相关联的孕妇人数

现在,您可以为每位医生执行这样的查询,并在每次迭代中为您构建不同的系列图表

最后,您会将所有系列数组传递给您的客户端并获取 highcharts 的数据

编辑

获取没有孕妇的月份的值 0 稍微复杂一些,因为如果没有至少一条记录可计数,group by 不会返回任何值。试试这个方法:

SELECT months.num, COUNT( p.preg_id )
FROM
( SELECT 1 AS num
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6
UNION ALL SELECT 7
UNION ALL SELECT 8
UNION ALL SELECT 9
UNION ALL SELECT 10
UNION ALL SELECT 11
UNION ALL SELECT 12 ) months
LEFT JOIN preg_reg_other p
ON months.num = MONTH ( p.reg_date )
INNER JOIN nurse_dets n
ON n.nurse_id = p.nurse_id
WHERE n.doctor_id = 1301
GROUP BY MONTH( months.num )
ORDER BY months.num ASC

首先我们手动建一个12个月的表,和其他表“左连接”,所以如果没有任何记录,最终计数应该为0

我还没有测试查询,但我希望你明白了

关于php - 使用 MySQL 按月为 HighCharts 格式化 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30436963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com