将MySQL查询结果转换为分层数据 - D3

时间:2013-10-10 04:32:36

标签: javascript php jquery json d3.js

如上所述,我正在尝试使用d3绘制图表,其中我要求数据处于父子关系中,但我无法弄清楚如何将MySQL查询结果转换为JSON父子格式。

提供的帮助将非常感谢。

我正在尝试复制以下网址中的图表:

Zoomable Partition Layout(点击分区可放大或缩小树状结构)

MySQL中的数据

Column1          Column2            Column3
First Top          -                  1500
First Child       First Top            500
Second Child      First Top            500
Third Child       First Top            500
First Sub-Child   First Child          250
First Sub-Child   First Child          250
Second Sub-Child  Second Child         250
Second Sub-Child  Second Child         250
Third Sub-Child   Third Child          250
Third Sub-Child   Third Child          250

所需数据格式:

{
    "name": "First Top",
    "children": [
    {
        "name": "First Child",
        "children": [
        {"name": "First Sub-Child", "size": 250},
        {"name": "First Sub-Child", "size": 250}
        ]
    },
    {
        "name": "Second Child",
        "children": [
        {"name": "Second Sub-Child", "size": 250},
        {"name": "Second Sub-Child", "size": 250}
        ]
    },
    {
        "name": "Third Child",
        "children": [
        {"name": "Third Sub-Child", "size": 250},
        {"name": "Third Sub-Child", "size": 250}
        ]
    }
    ]
}

1 个答案:

答案 0 :(得分:0)

这是一些假代码,假设一个层次结构:

  • 从数据库中获取父/子行(select t1.parent, t1.item, size from tree t1, tree t2 where t1.parent=t2.item
  • 循环遍历行:
    • 如果父项与上一项父项不同,且前一项父项已设置:
      • 将对象推送到数组
      • 开始一个新对象
    • 将子项和大小添加到对象
  • 将最后一个对象推送到数组
  • 获取root对象(其中parent为null)
  • 使用root对象将对象编码为json;见Create JSON-object the correct way
  • 输出json