我有两张table:任务和更新。"任务"表包含ToDo
项,而Updates表包含用户发送的任务的更新。更新通过每个表中匹配的taskId
值与任务绑定。我有一组查询,它们成功提取了与用户权限匹配的所有任务(familyId
)-我接下来需要做的是使用从第二个查询结果数组中提取的taskId
列值来完成如下语句
SELECT taskUpdate FROM updates WHERE taskId = ?
但我不知道该怎么做。
以下是我目前拥有的:
// Get all tasks
Task.getAll = (userId, result) => {
sql.query(`SELECT familyid FROM users WHERE id = '${userId}'`, (err, res) => {
if (err) {
console.log("Error selecting from USERS: ", err);
return result(null, err);
}
sql.query("SELECT * FROM tasks WHERE familyId = ?", res[0].familyid, (err, res) => {
if (err) {
console.log("Error selecting from TASKS: ", err);
return result(null, res);
}
console.log("tasks: ", res);
return result(null, res);
})
});
};
您可以在第二个嵌套查询中看到,我检索了"tasks"中familyId
与第一个查询的结果匹配的所有行。因此,现在我想使用taskId
列来匹配Updates表中具有相同taskId
值的行。我有一个模糊的想法,使用类似foreach循环的东西,但已经修修补补了一段时间,没有运气。
附录:应要求,以下是样本数据:
TASKS table
taskId col: 200, 201...
taskName col: Test01, Test02...
UPDATES table
updateId: 1, 2...
taskId: 200, 201...
taskUpdate: "Checked garage", "Need to go to store"...
...每个中有更多列,但这里真正重要的列是每个中的taskId和Updates中的taskUpdate。
在"SELECT * FROM tasks WHERE familyId =?"中提取任务后,我们将拥有一个任务数组。我需要使用该数组中的taskId列值,并将所有生成的taskId值馈送到"SELECT taskUpdate FROM updates WHERE taskId =?"中,以便检索上面显示的taskUpdate值。
1条答案
按热度按时间ltskdhd11#
您不需要获取所有taskId,然后查询Updates表并传递id数组。相反,您可以使用JOIN在单个查询中完成此操作。下面是一个示例,您可以遵循该示例:
但是上面的查询将只给予UPDATES表中存在的taskId的行。
对于此查询,我们获取familyId与某个条件匹配的所有行,然后针对两个表中taskId相同的条件与UPDATES连接。