我从三个MySQL表中提取数据以通过PHP中的AJAX和JSON生成引导数据表。我有多个组织单元(单元1,单元2,单元3等)。我也有多种程序类型(开始,中级和高级)。最后,我想为每个组织单位并排显示两年的数据(2105和2014年)。JSON对象的索引数组元素
换句话说,所得到的表将像这样被构造(与初节目类型虚拟值的一行):
Unit 1 Unit 2 Unit 3
2015 2014 2015 2014 2015 - 2014
Beginning 7 9 136 152 0 3
Intermediate
Advanced
的JSON对象,将创建和填充此dataTable中需要看起来是这样的:
[{"program_category":"Beginning","unit_1":{"2015":"7","2014":"9"},
"unit_2":{"2015":"136","2014":"152"},
"unit_3":{"2015":"0","2014":"3"}}]
到目前为止,我已经能够编写产生一个JSON字符串,让我相当接近的SQL查询,但你可以看到,“program_type”重演每个组织单位:
这里的SQL:
select all_programs_test.program_category as program_category, report_db.unit,
sum(case when all_programs_test.year = '2015' then 1 else 0 end) yr_2015,
sum(case when all_programs_test.year = '2014' then 1 else 0 end) yr_2014
from all_programs_test
JOIN report_db on report_db.id = all_programs_test.id
group by all_programs_test.program_category,report_db.unit
然后我json_encode在PHP中:
while($row = mysql_fetch_assoc($query4)) {
$query4_result[] = array (
'program_category' => $row['program_category'],
$row['unit'] => array(
'2015' => $row['yr_2015'],
'2014' => $row['yr_2014']
)
);
然后产生
[{"program_category":"Beginning","unit_1":{"2015":"7","2014":"9"}},
{"program_category":"Beginning","unit_2":{"2015":"136","2014":"152"}},
{"program_category":"Beginning","unit_3":{"2015":"0","2014":"3"}}]
正如你可以在JSON对象片断上面看到,“对每个组织单位重复“开始”。任何想法如何取而代之:
[{"program_category":"Beginning","unit_1":{"2015":"7","2014":"9"},
"unit_2":{"2015":"136","2014":"152"},
"unit_3":{"2015":"0","2014":"3"}}]
谢谢!
嗨,艾伦,只是试过你的解决方案,它的效果很好!非常感谢。 – tomish
不客气! :) – Allan