在SQLite中,我有3个表question_table
,question_description_table
,option_table
:
question_table
Id question1 question2 question3 ...
1 <data> <data> <data> ...
2 <data> <data> <data> ...
3 <data> <data> <data> ...
question_description_table
Id description1 description2 description2 ...
1 <data> <data> <data> ...
2 <data> <data> <data>...
3 <data> <data> <data>...
.
.
option_table
Id option1 option2 option3 ...
1 <data> <data> <data> ...
2 <data> <data> <data>...
.
.
对于每个问题,我需要在单个查询中从3个表中获取数据;对于问题1,查询应从
读取question1
-question_table
中的列,description_table1
的description_table
列,option1
中的前四个(option2
,option3
,option4
,option_table
)(假设每个问题有四个选项)。我尝试了以下命令:
SELECT
question_table.question1,
question_description_table.description1
FROM
question_table
INNER JOIN
question_description_table ON question_description_table.id=question_table.id
;
问题是将option_table与其他两个连接在一起。是JOIN解决方案吗?如果可以,该如何使用?
答案 0 :(得分:1)
如果只是回答您的问题,那么应该是这样:
select *
from question_table qt, qustion_description_table qdt, option_table ot
where qt.id = qdt.id and qdt.id = ot.id
但是,我认为您应该重组表。因此,您的question_table
应包含ID
和QUESTION
列,并在需要时包含DESCRIPTION
列。
ID | QUESTION | DESCRIPTION
... ... ...
然后,您的option_table
可以包含ID
,QUESTION_ID
,OPTION
和CORRECT
(1
-正确的0
-不正确)
ID | QUESTION_ID | OPTION | CORRECT
... ... ... ...
这样,它的结构更加合理,您只需更改相应的QUESTION_ID
就可以更改问题的选项。另外,如果您决定选择问题的选项,则可以运行一个简单的查询:
select qt.question, qt.description, ot.option, ot.correct
from question_table qt, option_table ot
where qt.id = ot.question_id and qt.question_id in (...)