最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

试图从两个请求中获取数据

IT培训 admin 5浏览 0评论

试图从两个请求中获取数据

我尝试从两个表的两个请求中获取数据。但是我很难如愿以偿。我有一个小组,对于每个小组,我都希望获得该小组中包括的所有元素的清单。因此,我希望所有组ID以及与它们相关的所有项目。

因此,我将第二个查询执行到第一个查询的回调中,并循环到一个循环中,以执行与第一个查询相同的时间。我认为我的问题来自循环

Groupe.getGroupeAndEqs = function getGroupeAndEqs(result) {
  sql.query("SELECT DISTINCT idGrp FROM groupe_equipement", function (err, res){
    if (err) {
      console.log("error: ", err);
      result(err, null);
    }
    else {
      for (var i = 0; i < res.length; i++){
        sql.query("SELECT e.nom FROM equipement as e, groupe_equipement as g where g.idGrp=? AND e.id = g.idEq", res[i].idGrp, function(err, res2){
          if(err){
            console.log("error: ", err);
            result(err, null);
          }
          else{
           // result(null, res);
           //I try to create an attribute with the result of the second query
           res[i].equipements += res2;
           //console.log(res[i]);
           //resu += result(null, res);
          console.log(res2);
          }
        });
      }
   result(null, res);
    }
  });
}

我只得到第一个查询的结果

回答如下:

您可以在一个查询中完成全部操作。这可能是您总处理时间的一半。检查此查询。

select g.idGrp, group_concat(distinct e.nom) from equipement e
inner join groupe_equipement g
on e.id = g.idEq
group by g.idGrp

试图从两个请求中获取数据

我尝试从两个表的两个请求中获取数据。但是我很难如愿以偿。我有一个小组,对于每个小组,我都希望获得该小组中包括的所有元素的清单。因此,我希望所有组ID以及与它们相关的所有项目。

因此,我将第二个查询执行到第一个查询的回调中,并循环到一个循环中,以执行与第一个查询相同的时间。我认为我的问题来自循环

Groupe.getGroupeAndEqs = function getGroupeAndEqs(result) {
  sql.query("SELECT DISTINCT idGrp FROM groupe_equipement", function (err, res){
    if (err) {
      console.log("error: ", err);
      result(err, null);
    }
    else {
      for (var i = 0; i < res.length; i++){
        sql.query("SELECT e.nom FROM equipement as e, groupe_equipement as g where g.idGrp=? AND e.id = g.idEq", res[i].idGrp, function(err, res2){
          if(err){
            console.log("error: ", err);
            result(err, null);
          }
          else{
           // result(null, res);
           //I try to create an attribute with the result of the second query
           res[i].equipements += res2;
           //console.log(res[i]);
           //resu += result(null, res);
          console.log(res2);
          }
        });
      }
   result(null, res);
    }
  });
}

我只得到第一个查询的结果

回答如下:

您可以在一个查询中完成全部操作。这可能是您总处理时间的一半。检查此查询。

select g.idGrp, group_concat(distinct e.nom) from equipement e
inner join groupe_equipement g
on e.id = g.idEq
group by g.idGrp

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论