Имеется две таблицы: ВОПРОСЫ И ОТВЕТЫ
ВОПРОСЫ
ID_ВОПРОСА (PK)
ТЕКСТ ВОПРОСА
ОТВЕТ (FK)
ПРАВИЛЬНЫЙ ОТВЕТ (FK)
ОТВЕТЫ
ID_ОТВЕТА (PK)
ТЕКСТ ОТВЕТА
ID_ВОПРОСА (FK)
Как возможно реализовать такой запрос?
INSERT INTO ВОПРОСЫ (ТЕКСТ ВОПРОСА, ОТВЕТ, ПРАВИЛЬНЫЙ ОТВЕТ)
VALUES ("ТЕКСТ ВОПРОСА", ПОДЗАПРОС(СОЗДАТЬ ЗАПИСЬ В ТАБЛИЦЕ ОТВЕТЫ И ОТДАТЬ ЕГО ID), 1)
Вероятно, ход мыслей неверный. Но я прям и не знаю как иначе. Буду рад любой помощи
Ответ
Схематично порядок работы с таблицами может выглядеть следующим образом
-- Сначала вставляем вопрос
INSERT INTO ВОПРОСЫ (ТЕКСТ ВОПРОСА, ОТВЕТ, ПРАВИЛЬНЫЙ ОТВЕТ)
VALUES ("ТЕКСТ ВОПРОСА", NULL, NULL);
-- Получаем идентификатор вопроса
SET @id = LAST_INSERT_ID();
-- Вставляем ответы
INSERT INTO ОТВЕТЫ (NULL, "ТЕКСТ ОТВЕТА", @id);
SET @answer_id = LAST_INSERT_ID();
INSERT INTO ОТВЕТЫ (NULL, "ТЕКСТ ОТВЕТА", @id);
SET @answer_id = LAST_INSERT_ID();
INSERT INTO ОТВЕТЫ (NULL, "ТЕКСТ ОТВЕТА", @id);
SET @answer_id = LAST_INSERT_ID();
INSERT INTO ОТВЕТЫ (NULL, "ТЕКСТ ОТВЕТА", @id);
SET @answer_id = LAST_INSERT_ID();
-- Обновляем FK ВОПРОСЫ.ОТВЕТ
UPDATE ВОПРОСЫ
SET ОТВЕТ = @answer_id
WHERE id = @id;
-- Вставляем правильный ответ
INSERT INTO ОТВЕТЫ (NULL, "ТЕКСТ ПРАВИЛЬНОГО ОТВЕТА", @id);
-- Получаем идентификатор правильного ответа
SET @answer_right_id = LAST_INSERT_ID();
-- Обновляем FK ВОПРОСЫ.ПРАВИЛЬНЫЙ ОТВЕТ
UPDATE ВОПРОСЫ
SET ПРАВИЛЬНЫЙ ОТВЕТ = @answer_right_id
WHERE id = @id;
При реальном использовании русские названия столбцов и таблиц, следует заменить на английские эквиваленты, не содержащие пробелов.
Комментариев нет:
Отправить комментарий