Mysql 如何在SQL查询中进行两次分组,并导出为JSON
这里有一个csv格式的示例,是我的mySQL存储Mysql 如何在SQL查询中进行两次分组,并导出为JSON,mysql,sql,json,Mysql,Sql,Json,这里有一个csv格式的示例,是我的mySQL存储 trek_id, number, name, value, units, userID, deviceID, lat , lng -------------------------------------------------------------------------------- 88, 4, Hum , 720, PPB , 96, 1, 40.0215268, -105
trek_id, number, name, value, units, userID, deviceID, lat , lng
--------------------------------------------------------------------------------
88, 4, Hum , 720, PPB , 96, 1, 40.0215268, -105.2177324
88, 4, PM10, 720, PPB , 96, 1, 40.0215268, -105.2177324
88, 6, Pres, 730, PPB , 96, 1, 40.0215299, -105.2177096
88, 6, PM10, 730, PPB , 96, 1, 40.0215299, -105.2177096
所以一个trek_id有多个数值,每个数值都包含多个测量值。我很想知道如何查询它,以便最终插入一个json对象,如下所示:
{
"88":{
"4":{
"lat":"40.0215268",
"lng":"-105.2177324",
"userID":96,
"deviceID":"1",
"measurements":[
["Hum",
"PPB",
720
],
["PM10",
"PPB",
720
]
]
},
"6":{
"lat":"40.0215299",
"lng":"-105.2177096",
"userID":96,
"deviceID":"1",
"measurements":[
["Pres",
"PPB",
730
],
["PM10",
"PPB",
720
]
]
}
}
}
所以本质上我需要根据trek_id进行分组,然后再根据编号进行分组。好的,首先要做的事情是:SQL结果是平面表。它们没有子组或子数组。因此,您需要处理显示代码中的所有子分组 第二:现有数据已经非常适合显示代码,比如说PHP创建多维数组以转换为JSON --提示伪U代码--
<?php
// assume $results contains your data AND SORTED BY trek_id, number, name
$cur_trek = null;
$cur_number = null;
$json = array();
foreach ($results as $res) {
if ($cur_trek != $res['trek_id']) {
$cur_trek = $res['trek_id'] ;
$json[$cur_trek] = array();
$cur_number = null;
}
if ($cur_number != $res['number']) {
$cur_number = $res['number'];
$json[$cur_trek][$cur_number] =
array(
'lat' => $res['lat'],
'lng' => $res['lng'],
'userID' => $res['userID'],
'deviceID' => $res['deviceID'],
'measurements' => array();
);
}
$json[$cur_trek][$cur_number]['measurements'][] =
array($res['name'], $res['units'], $res['value']);
}
$json = json_encode($json);
考虑到最终结果,按sql语句中的某些内容分组是没有意义的。获取所有记录-如图所示,使用您选择的编程语言循环遍历它们,并构建json数组这是您的查询?