我想查询一个 问题
和它的所有 答案
。以下两个函数都可以正常工作。但问题是,我认为应该只用一个查询来完成这个任务(出于简洁起见,我删除了错误检查)。
func QuestionById(id string) (*Question, error) {
question := new(Question)
_ = db.QueryRow("select * from question where question.id = ?", id).Scan(
&question.Id,
&question.LessonId,
&question.Body,
&question.Type,
)
return question, nil
}
func AnswersByQuestionId(id string) ([]*Answer, error) {
rows, _ := db.Query("select * from answer where question_id = ?", id)
defer rows.Close()
answers := make([]*Answer, 0)
for rows.Next() {
answer := new(Answer)
_ = rows.Scan(&answer.Id, &answer.Body, &answer.QuestionId, &answer.Correct)
answers = append(answers, answer)
}
_ = rows.Err()
return answers, nil
}
我想以以下方式(或类似方式)使用连接查询:
SELECT * FROM table1 JOIN table2 ON table1.column = table2.column;
func QuestionByIdAndAnswers(id string) (*Question, []*Answer error) {
rows, _ := db.Query("select * from question join answer on question.id = answer.question_id where question.id = ?", id)
// more stuff here
return question, answers, nil
}