我正在努力从我的数据库中获取我需要的数据。所以我的结构很直截了当,我有一个试题表
quiz_question
id (PK)
question (text)
type (text)
quiz_answer
id (PK)
question_id (FK)
answer (text)所以我的数据库看起来有点像一个问题和答案。
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来返回问题及其相关的答案,如下所示。
{
questions [{
id: 1,
question: 'What is your gender',
type: 'radio',
answers: [
{
'Male'
},
{
'Female'
},
{
'Non-binary'
}
]
}...
]
}我正在尝试形成一个SQL查询,但有点丢失,目前我有
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;但是,这似乎返回了一个奇怪的数据集。那么,我如何查询我的数据库来检索问题及其答案呢?
谢谢
发布于 2021-08-29 15:05:11
正如RiggsFolly所说,从您要创建的JSON看来,您只需要执行以下操作:
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
.then(([rows]) => {
console.log(rows);
}这至少会告诉你返回了什么,然后你可以根据你的需要去那里。
https://stackoverflow.com/questions/68973882
复制相似问题