首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据两个按顺序运行的MySQL SELECT查询的结果创建一个新数组(第二个查询基于第一个查询的结果)

根据两个按顺序运行的MySQL SELECT查询的结果创建一个新数组(第二个查询基于第一个查询的结果)
EN

Stack Overflow用户
提问于 2022-11-04 10:17:30
回答 1查看 22关注 0票数 0

我正在努力解决Nodejs和MySQL后端中的数组问题(Reactive前端)。前端发送一个包含其主体的两个对象的请求,然后API使用这两个对象作为标准对表1执行SELECT查询。此查询的结果是如下所示的对象数组:

代码语言:javascript
复制
[
    {
        "userID": 245
    },
    {
        "userID": 244
    },
    {
        "userID": 247
    }
]

然后对表2执行第二个SELECT查询,将来自第一个查询的userID作为条件(每个userID包含表2中的“firstName”和“lastName”属性)。我所要达到的目标如下,我可以把它寄回前线:

代码语言:javascript
复制
[
  {
    userID: 245,
    firstName: "Test",
    lastName: "Student1",
  },
  {
    userID: 244,
    firstName: "Test",
    lastName: "Student2",
  },
  {
    userID: 247,
    firstName: "Test",
    lastName: "Student3",
  },
];

以下是我要实现这一目标的功能:

代码语言:javascript
复制
export const view = async (req, res) => {
  const { classIdentifier, syllabusCode } = req.body;
  // User the connection

  db.query(
    "SELECT DISTINCT studentID AS 'userID' FROM classIndex WHERE teacherID = ? AND classIdentifier = ? AND syllabusCode = ?;",
    [req.params.teacherID, classIdentifier, syllabusCode],
    (err, rows) => {
      const allData = [];
      const final = async () => {
        await rows.forEach((row) => {
          db.query(
            "SELECT userID, firstName, lastName from userIndex WHERE userID = ?",
            [row.userID],
            (err, data) => {
              if (!err) {
                data.forEach((users) => {
                  allData.push({
                    userID: users.userID,
                    firsName: users.firstName,
                    lastName: users.lastName,
                  });
                });
              } else {
                console.log(err);
              }
            }
          );
        });
      };
      final().then((result) => {
        console.log(result);
      });
      console.log(allData);
    }
  );
};

请让我知道,如果我可以提供任何更多的代码,任何帮助将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-04 10:29:57

您可以使用嵌套查询。现在你跑

代码语言:javascript
复制
SELECT DISTINCT studentID AS 'userID' FROM classIndex WHERE teacherID = ? AND 
classIdentifier = ? AND syllabusCode = ?;

然后对每个条目进行第二个查询。

您可以将查询组合在一起,让mysql为您完成工作。(我只是不确定在嵌套查询中的那个点是否有不同的地方。)

代码语言:javascript
复制
SELECT firstName, lastName, userID FROM userIndex WHERE userID LIKE (
   SELECT DISTINCT studentID
   FROM classIndex 
   WHERE teacherID = ? AND classIdentifier = ? AND syllabusCode = ?
)

短信息到Subsqueries

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74315402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档