Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL是否能够返回嵌套数据?如果没有,是否有最佳实践?_Sql_Json_Node.js_Nested Lists_Node Mssql - Fatal编程技术网

SQL是否能够返回嵌套数据?如果没有,是否有最佳实践?

SQL是否能够返回嵌套数据?如果没有,是否有最佳实践?,sql,json,node.js,nested-lists,node-mssql,Sql,Json,Node.js,Nested Lists,Node Mssql,现在我正在处理一个查询,它从表1中输出大约20k行数据。节点方便地将其转换为简单的JSON。所以它是一个巨大的对象,包含作为较小对象的输出行 { { // item 1 column1: value1, column2: value2, ... }, { // item 2 column1: value1, column2: value2, ... }, ...

现在我正在处理一个查询,它从表1中输出大约20k行数据。节点方便地将其转换为简单的JSON。所以它是一个巨大的对象,包含作为较小对象的输出行

{
    { // item 1
        column1: value1,
        column2: value2,
        ...
    },
    { // item 2
        column1: value1,
        column2: value2,
        ...
    },
    ...
}
对于这个结果中的每个项目,我想从表2中选择更多的值。然而,列表中的一个项目与表2中的行之间的相关性是一对多的。也就是说,如果我做一个简单的左连接,它会产生如下结果:

{
    { // item 1 with added value from table2
        ...
    },
    { // item 1 with different value from table2
        ...
    },
    { // item 1 with yet another value from table2
        ...
    },
    ...
}
这在bandwith上是非常浪费的,并且远远超过了我希望它在20k行的速度限制。我想要实现的是这样一种结构:

{
    { // item 1
        column1: value1,
        column2: value2,
        ...
        {
            table2value1: value1,
            table2value2: value2,
            ...
        }
    },
    { // item 2
        column1: value1,
        column2: value2,
        ...
        {
            table2value1: value1,
            table2value2: value2,
            ...
        }
    },
    ...
}
就目前而言,在一份准备好的声明中循环浏览20000项是我对如何做到这一点的最佳猜测。然而,这也是相当缓慢的,可能有一个更好的方式,我不知道或想不出来。一些规范:使用节点、mssql包和SQLServer2000以及数据库


非常感谢您的任何意见

您可以编写一个返回有序列表的查询:

customer   order   orderline   ...
1          1       1
1          1       2
1          2       1
2          3       1

在客户端,您可以迭代此行集,并在客户id更改时创建新客户,在订单号更改时创建新订单,等等。这种方法只使用一个数据库调用,这一事实使它非常快。

听起来像是要在服务器上进行左连接……左连接正是产生这种结果的原因。很抱歉没有具体说明。