父查询中每行的子查询-Node.js和Node-mssql

时间:2018-07-25 18:39:01

标签: javascript sql-server node.js node-mssql

我正在尝试找出使用Node.JS和node-mssql执行以下操作的最有效方法。我想要一个看起来像这样的最终结果:

{
   movie_id: '1234',
   name: 'Hereditary',
   countries: [
      "Canada",
      "United States",
      "Australia"
  ]
},
{
   movie_id: '1235',
   name: 'Rosemarys Baby',
   countries: [
      "Canada"
  ]
}

我的桌子看起来像这样

电影:

movie_id    | name 
---------------------
1234        | Hereditary
1235        | Rosemarys Baby

电影国家/地区:

id  |  movie_id    | country
---------------------
1   |  1234        | Canada
2   |  1234        | United States
3   |  1234        | Australia
4   |  1235        | Canada

到目前为止,我已经尝试了mssql的Github页面中的几个不同示例。我可以从“电影”表中获得结果,但是在尝试获取每部电影的国家/地区时我陷入困境。

1 个答案:

答案 0 :(得分:1)

在相应的变量中获取movie表和movie_countries表的所有数据。

movies.forEach(function(movie) {
    movie.countries = _.remove(movie_countries, function(mc) {
        return movie.movie_id === mc.movie_id; //Edited this from = to ===
    });
});

Sql方式:从电影mv左联接中加入mv.movi​​e_id,mv.name,GROUP_CONCAT(mvc.country)AS国家(地区),mv.movi​​e_id = mvc.movi​​e_id在mv.movi​​e_id上​​的mvc ON国家/地区

movies.forEach(function(movie) {
    movie.countries = movies.countries.length ? movies.countries.split(',') :[];
});