Как читать из нескольких таблиц в одном запросе? - PullRequest
0 голосов
/ 05 июля 2018

В 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 решением? Если да, то как его использовать?

1 Ответ

0 голосов
/ 05 июля 2018

Если просто ответить на ваш вопрос, то это должно быть так:

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 (...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...