对嵌套 JSON 对象的平面 MySQL 查询
Flat MySQL query to nested JSON objects
有没有一种快速的方法,不使用一系列复杂的 for 循环(使用类似 Underscore 的东西?还是对我的 MySQL 查询的改进?要获取格式化为平面列表的数据,如下所示:
[
{
"J_NUM": "BOAK-1212",
"X_DUE_DATE": "2012-06-20T00:00:00.000Z",
"X_LEAD_TIME": 0,
"X_NAME": "Mail List Due",
},
{
"J_NUM": "BOAK-1212",
"X_DUE_DATE": "2012-06-08T00:00:00.000Z",
"X_LEAD_TIME": 0,
"X_NAME": "Vendor Specs 2",
},
{
"J_NUM": "JEFF-2000",
"X_DUE_DATE": "2012-06-11T00:00:00.000Z",
"X_LEAD_TIME": 0,
"X_NAME": "Client Final Approval",
},
{
"J_NUM": "JEFF-2000",
"X_DUE_DATE": "2012-06-08T00:00:00.000Z",
"X_LEAD_TIME": 0,
"X_NAME": "Vendor Specs 2",
}
]
并根据某些参数对其进行嵌套/分组,在本例中为 J_NUM
,因此它如下所示:
[
{
"J_NUM": "BOAK-1212",
"SCHEDULE_SERIES": [
{
"X_DUE_DATE": "2012-06-20T00:00:00.000Z",
"X_LEAD_TIME": 0,
"X_NAME": "Mail List Due",
},
{
"X_DUE_DATE": "2012-06-08T00:00:00.000Z",
"X_LEAD_TIME": 0,
"X_NAME": "Vendor Specs 2",
}
]
},
{
"J_NUM": "JEFF-2000",
"SCHEDULE_SERIES": [
{
"X_DUE_DATE": "2012-06-11T00:00:00.000Z",
"X_LEAD_TIME": 0,
"X_NAME": "Client Final Approval",
},
{
"X_DUE_DATE": "2012-06-08T00:00:00.000Z",
"X_LEAD_TIME": 0,
"X_NAME": "Vendor Specs 2",
}
]
}
]
在 while 循环中,您可以构建所需的输出:
$query = "SELECT ...";
$result = mysqli_query($link, $query);
$out = array();
while($row=mysqli_fetch_assoc($result)) {
$J_NUM = $row['J_NUM'];
if(!array_key_exists($J_NUM, $out)) {
$out[$J_NUM] = array("J_NUM" => $J_NUM, "SCHEDULE_SERIES" => array());
}
$out[$J_NUM]['SCHEDULE_SERIES'][] = array(
"X_DUE_DATE" => $row['X_DUE_DATE'],
"X_LEAD_TIME" => $row['X_LEAD_TIME'],
"X_NAME" => $row['X_NAME']);
}
$out = json_encode(array_values($out), true);
使用下划线弄清楚了。
_.groupBy(theData, 'J_NUM')
将返回以下内容:
{"BOAK-1212":[
{"J_NUM":"BOAK-1212",
"X_DUE_DATE":"2012-06-20T00:00:00.000Z",
"X_LEAD_TIME":0,
"X_NAME":"Mail List Due"},
{"J_NUM":"BOAK-1212",
"X_DUE_DATE":"2012-06-08T00:00:00.000Z",
"X_LEAD_TIME":0,
"X_NAME":"Vendor Specs 2"}
],
"JEFF-2000":[
{"J_NUM":"JEFF-2000",
"X_DUE_DATE":"2012-06-11T00:00:00.000Z",
"X_LEAD_TIME":0,
"X_NAME":"Client Final Approval"},
{"J_NUM":"JEFF-2000",
"X_DUE_DATE":"2012-06-08T00:00:00.000Z",
"X_LEAD_TIME":0,
"X_NAME":"Vendor Specs 2"}
]}
相关文章:
- 使用jquery将mysql数据获取到新的表行中
- 将地理编码结果转换为php变量以发布到mysql数据库
- 如何使用JS禁用表行,并在MYSQL中插入所选选项
- 从MySQL数据库中获取输入数据需要两次页面刷新
- 将一个表的id与另一个表中的user_id进行匹配,以获取mysql中的记录
- ThreeJS将画布中的文本渲染为纹理,然后应用于平面
- 在php和mysql中选择选项.一旦选择了选项,就列出我的sql数据库数据
- 如何使用PHP将javascript变量添加到mysql数据库中
- 嵌套JSON到平面HTML表
- 将phonegap图像发布到php/mysql-图像字段从发布请求中消失
- 在node.js-mysql中执行UPDATE查询不起作用
- 更新从Mysql查询检索到的数据?Node.js节点mysql
- 单击鼠标,用MySQL数据填充html表单输入字段
- 浓缩一系列mySQL查询
- 如何翻译MySQL查询's ResultSet转换为整数
- 如何在mysql查询(NODE.js)中重复使用一个参数
- Node.JS, Angular.JS, MySql,Express.JS
- Ajax和MySql的插入、检查和检索
- onclick->mysql查询->javascript;同一页
- 对嵌套 JSON 对象的平面 MySQL 查询