我正在开发一个angular + nodejs应用程序,我需要一些json格式的sql数据。我能够在json中获取数据,但我需要将数据按树的方式分组。有没有办法在sql,server或前端级别执行此操作?
我在表格中的数据
我目前得到什么
{"":[
"3",
"6",
"12"
],
"":[
"3",
"6",
"13"
],
"": [
"3",
"7",
"16"
],
"": [
"3",
"7",
"17"
],
"": [
"3",
"8",
"18"
],
"": [
"3",
"8",
"19"
],
"": [
"3",
"9",
"20"
],
"": [
"3",
"9",
"21"
]
}
我想要的是json:
{"" :{ "3": {"6": ["12", "13"], "7": ["16", "17"], "8": ["18", "19"], "9": [ "20", "21" ]} }}
请建议一种方法来做到这一点。
提前致谢!
答案 0 :(得分:1)
首先,您必须将数据视为有效的json,如下所示:
var items = [
{
l0: "3",
l1: "6",
l2: "12"
},
{
l0: "3",
l1: "6",
l2: "13"
},
{
l0: "3",
l1: "7",
l2: "16"
},
{
l0: "3",
l1: "7",
l2: "17"
},
{
l0: "3",
l1: "8",
l2: "18"
},
{
l0: "3",
l1: "8",
l2: "19"
},
{
l0: "3",
l1: "9",
l2: "20"
},
{
l0: "3",
l1: "9",
l2: "21"
}
];
然后你可以得到你想要的东西:
var result = {};
items.forEach(item => {
result[item.l0] = result[item.l0] || {};
result[item.l0][item.l1] = result[item.l0][item.l1] || [];
result[item.l0][item.l1].push(item.l2);
});
console.log(result);
最终结果:
答案 1 :(得分:0)
您可以按多列对SQL查询结果进行排序,这应该按照您要查找的顺序返回数据:
<original_query> + ORDER BY c1, c2, c3