gpt4 book ai didi

使用 Ruby on Rails Active Record 的 SQL 多表嵌套组

转载 作者:行者123 更新时间:2023-11-29 12:51:20 25 4
gpt4 key购买 nike

模型:

一个调查survey_answers,每个都有一个answer和一个question

一个问题属于一个类别

示例:

Survey_answersurvey_idanswer_idquestion_id

questioncategory_id

我正在使用 Ruby on RailsActive Record

使用 SQL,并从调查开始,我如何分组如下:

{ 类别 => 问题 => 答案 }

示例输出:

{[
category_one_record,
[question_1,[answer_1, answer_2]],
[question_2,[answer_3, answer_4]],
category_two_record,
[question_3,[answer_5, answer_6]],
[question_4,[answer_7, answer_8]],
category_three_record,
...
]}

我了解如何进行分组,但我不了解如何使用 SQL 进行嵌套分组

最佳答案

我相信您正在以非 SQL 方式考虑这个问题。

SQL 是表格形式的,当返回这种信息时,接受重复而不是寻找生成嵌套数据结构(例如可以用 JSON、XML 等来完成)是正常的。

看起来不需要任何实际聚合(GROUP BY 的用途)。相反,您指的是一种将相关记录并排保存的方法。

简单地加入数据然后对其进行排序。

你的原始帖子在表格结构上不清楚,所以这是我的意思的一个非常粗略的例子......

SELECT
survey.name AS survey_name,
category.name AS category_name,
question.text AS question_text,
answer.text AS answer_text
FROM
survey
INNER JOIN
question
ON question.survey_id = survey.id
INNER JOIN
category
ON category.id = question.category_id
INNER JOIN
answer
ON answer.question_id = question.id
ORDER BY
survey.name,
category.name,
question.text,
answer.text

这样的查询可能会返回如下所示的记录集...

 survey_name | category_name | question_text | answer_text
-------------+---------------+---------------+-------------
survey_1 | category_1 | question_1 | answer_1
survey_1 | category_1 | question_1 | answer_2
survey_1 | category_1 | question_2 | answer_3
survey_1 | category_1 | question_2 | answer_4
survey_1 | category_2 | question_3 | answer_5

表格。不嵌套。

关于使用 Ruby on Rails Active Record 的 SQL 多表嵌套组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53210940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com