У меня есть таблица базы данных MySQL (например, скриншот скриншота, так как столбцов много, чтобы сделать таблицу здесь) -
Как показано на рисунке выше, в одной таблице qbank
есть как вопросы, так и варианты (ответы). Раньше это казалось хорошим подходом, но теперь стало известно, что это не считается хорошей практикой. Итак, я создал две разные таблицы для вопросов и вариантов (ответов). Структура моей таблицы answers
-
ID
question_id
answer
correct
Но я не могу построить один SQL-запрос, я могу преобразовать столбцы таблицы answers
qbank
table qbank
нечто подобное:
+---------------+----------------------+
|Table_Answers | Table_Qbank |
+---------------+----------------------+
|ID | 1 |
+---------------+----------------------+
|question_id | q_id (1) |
+---------------+----------------------+
|answer_id | option_01_text |
+---------------+----------------------+
|correct | option_01_is_correct |
+---------------+----------------------+
|ID | 2 |
+---------------+----------------------+
|question_id | q_id (1) |
+---------------+----------------------+
|answer_id | option_02_text |
+---------------+----------------------+
|correct | option_02_is_correct |
+---------------+----------------------+
т.е. сначала вставьте все 4 параметра и значения, если они верны или нет для первого вопроса, затем аналогично вставьте запросы для других строк вопросов.
Я могу сделать эту работу с PHP, но для 30000 строк вопросов я пытаюсь найти способ, если любой SQL-запрос может быть настроен для выполнения этой работы с самого PHPMyAdmin.
Шаг 1. Пересмотрите схему схемы.
Вот пример нормализованной схемы:
questions
question_id, question
1, What is the name of the current Prime Minister of India?
2, What it the capital of India?
answers
answer_id, question_id, answer, is_correct
101 1 Ram 0
102 1 Shyam 1
103 1 Kishan 0
104 1 Mohan 0
105 2 Jaipur 0
106 2 Chennai 0
107 2 Delhi 1
108 2 Kolkata 0
В качестве альтернативы вы можете просто сказать, что первый ответ всегда правильный, не требуя колонки is_correct или сохраняя ссылку на правильные ответы в отдельной таблице.