试图从两个请求中获取数据
我尝试从两个表的两个请求中获取数据。但是我很难如愿以偿。我有一个小组,对于每个小组,我都希望获得该小组中包括的所有元素的清单。因此,我希望所有组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