首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从数据库中检索数据及其关系

从数据库中检索数据及其关系
EN

Stack Overflow用户
提问于 2021-08-29 14:30:17
回答 2查看 45关注 0票数 1

我正在努力从我的数据库中获取我需要的数据。所以我的结构很直截了当,我有一个试题表

代码语言:javascript
运行
复制
quiz_question
    id (PK)
    question (text)
    type (text)

quiz_answer
    id (PK)
    question_id (FK)
    answer (text)

所以我的数据库看起来有点像一个问题和答案。

代码语言:javascript
运行
复制
quiz_question

id  |   question               |  type
----------------------------------------
1   |   What is your gender    |  radio


quiz_answer 

id  |   question_id   |  answer
------------------------------------
1   |   1             |  Male
------------------------------------
2   |   1             |  Female
------------------------------------
3   |   1             |  Non-binary

因此,我要做的是构建一些JSON来返回问题及其相关的答案,如下所示。

代码语言:javascript
运行
复制
{
    questions [{
        id: 1,
        question: 'What is your gender',
        type: 'radio',
        answers: [
            {
                'Male'
            },
            {
                'Female'
            },
            {
                'Non-binary'
            }
        ]
      }...
    ]
}

我正在尝试形成一个SQL查询,但有点丢失,目前我有

代码语言:javascript
运行
复制
select quiz_question.question, quiz_question.helptext,
        quiz_question.imageurl, quiz_question.questiontype 
FROM quiz_question 
    INNER JOIN quiz_answer on quiz_question.id = quiz_answer.questionId;

但是,这似乎返回了一个奇怪的数据集。那么,我如何查询我的数据库来检索问题及其答案呢?

谢谢

EN

Stack Overflow用户

发布于 2021-08-29 15:05:11

正如RiggsFolly所说,从您要创建的JSON看来,您只需要执行以下操作:

代码语言:javascript
运行
复制
SELECT q.id, q.question, q.questiontype, a.answer AS answers
FROM quiz_question q
INNER JOIN quiz_answer a ON q.id = a.questionId;

但这只是个开始。我认为KeitelDOG是对的,因为您可能想考虑重新排列数据集,假设问题的答案选择以后不会改变。如果其他一些问题有不同类型的答案,比如用户将输入一些信息并将该答案插入,那么最好将它们分开,并在必要时这样做。

要从该联接中获取对象,您可能希望在查询后执行如下操作,假设您在JavaScript中使用了一个答应().query

代码语言:javascript
运行
复制
.then(([rows]) => {
    console.log(rows);
}

这至少会告诉你返回了什么,然后你可以根据你的需要去那里。

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

https://stackoverflow.com/questions/68973882

复制
相关文章

相似问题

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