Firebird数据库关联问答表联合查询:获取层级式结果的SQL语句
解决Firebird中关联表按问题+对应答案顺序输出的SQL查询
当然可以做到啦!这里有个适配Firebird的SQL查询方案,完全能输出你想要的格式:
SELECT text_field AS "Text" FROM ( SELECT qsn_text AS text_field, qsn_id * 1000 AS sort_order FROM 问题表 UNION ALL SELECT ans_text AS text_field, qsn_id * 1000 + ans_id AS sort_order FROM 答案表 ) combined ORDER BY sort_order;
简单解释下这个查询的逻辑:
- 用
UNION ALL把两张表的数据合并成一个临时结果集:- 从问题表中提取问题文本,同时生成一个排序值
qsn_id * 1000,确保每个问题的排序值远小于其对应答案的排序值 - 从答案表中提取答案文本,排序值设为
qsn_id * 1000 + ans_id,让答案紧跟在对应问题的后面,且按答案ID顺序排列
- 从问题表中提取问题文本,同时生成一个排序值
- 最后按
sort_order字段排序,就能得到你要的层级化输出:先显示问题,再依次显示该问题的所有答案,然后是下一个问题及其答案。
内容的提问来源于stack exchange,提问作者V. Parshin
相关产品推荐
相关产品推荐

