首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL查询中进行2个分组,并导出为JSON

问如何在SQL查询中进行2个分组,并导出为JSON
EN

Stack Overflow用户
提问于 2017-09-16 05:07:57
回答 1查看 23关注 0票数 0

下面是我的mySQL商店的csv形式的示例。

代码语言:javascript
复制
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有多个number值,每个数字包含多个测量值。我很想知道如何查询它,这样我就可以最终插入到如下所示的json对象中:

代码语言:javascript
复制
{  
"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上分组,然后再在number上分组。

EN

回答 1

Stack Overflow用户

发布于 2017-09-16 08:00:58

好的,首先要做的是: SQL结果是平面表格。它们没有子组或子数组。所以你需要处理显示代码中的所有子分组。

其次:您现有的数据已经非常适合显示代码(比方说PHP)来创建多维数组来转换为JSON。

-提示PSEUDO_CODE

代码语言:javascript
复制
<?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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46247493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档