Страницы

Поиск по вопросам

среда, 19 июня 2019 г.

Как осуществить подзапрос SQL?

Имеется две таблицы: ВОПРОСЫ И ОТВЕТЫ
ВОПРОСЫ

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;
При реальном использовании русские названия столбцов и таблиц, следует заменить на английские эквиваленты, не содержащие пробелов.

Комментариев нет:

Отправить комментарий