Доброй ночи! Проблема такая. Есть две таблицы в БД - в одной "ответы студента на тест", в другой "ключи к тесту". Требуется написать процедуру или функцию, которая бы сравнивала соответствующие значения (ответ на №1 и ключ к №1), и заносила в третью таблицу (результаты) значение 1 если ответ совпал с ключом, и 0 если не совпал.
Вот коды таблиц:
CREATE TABLE IF NOT EXISTS `test_keys`
( `variant` int(5) NOT NULL,
`ex_1` varchar(3) NOT NULL, `ex_2`
varchar(3) NOT NULL, `ex_3`
varchar(3) NOT NULL, `ex_4`
varchar(5) NOT NULL, `ex_5`
varchar(5) NOT NULL, PRIMARY KEY
(`variant`), UNIQUE KEY `variant`
(`variant`), UNIQUE KEY `variant_2`
(`variant`) ) ENGINE=MyISAM DEFAULT
CHARSET=utf8;
--
-- Дамп данных таблицы `test_keys`
--
INSERT INTO `test_keys` (`variant`,
`ex_1`, `ex_2`, `ex_3`, `ex_4`,
`ex_5`) VALUES (11, 'B', 'B', 'A',
'B', 'B'), (13, 'C', 'C', 'C', 'A',
'A'), (51, 'A', 'A', 'B', 'B', 'C');
//-----------------------
CREATE TABLE IF NOT EXISTS
`test_papers` ( `student_id` int(10)
NOT NULL, `test_id` int(10) NOT NULL
AUTO_INCREMENT, `variant` int(5) NOT
NULL, `ex_1` varchar(3) NOT NULL,
`ex_2` varchar(3) NOT NULL, `ex_3`
varchar(3) NOT NULL, `ex_4`
varchar(5) NOT NULL, `ex_5`
varchar(5) NOT NULL, PRIMARY KEY
(`test_id`), KEY `student_id`
(`student_id`) ) ENGINE=MyISAM
DEFAULT CHARSET=utf8 AUTO_INCREMENT=8
;
--
-- Дамп данных таблицы `test_papers`
INSERT INTO `test_papers`
(`student_id`, `test_id`, `variant`,
`ex_1`, `ex_2`, `ex_3`, `ex_4`,
`ex_5`) VALUES (14, 6, 13, 'A', 'B',
'B', 'B', 'C'), (1, 7, 51, 'C', 'C',
'B', 'A', 'C');
//-----------------
-- Структура таблицы `test_results`
--
CREATE TABLE IF NOT EXISTS
`test_results` ( `stud_id` int(10)
NOT NULL, `test_id` int(10) NOT
NULL, `variant` int(5) NOT NULL,
`ex_1` int(2) NOT NULL, `ex_2`
int(2) NOT NULL, `ex_3` int(2) NOT
NULL, `ex_4` int(2) NOT NULL,
`ex_5` int(2) NOT NULL, `mark`
int(2) NOT NULL, KEY `stud_id`
(`stud_id`), KEY `test_id`
(`test_id`) ) ENGINE=MyISAM DEFAULT
CHARSET=utf8;
--
-- Дамп данных таблицы `test_results`
--
INSERT INTO `test_results` (`stud_id`,
`test_id`, `variant`, `ex_1`, `ex_2`,
`ex_3`, `ex_4`, `ex_5`, `mark`) VALUES
(13, 1, 44, 1, 1, 1, 0, 0, 3), (14, 6,
13, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0, 0,
0, 0, 0, 0), (16, 0, 0, 0, 0, 0, 0, 0,
0);
А зачем вам вставлять в таблицу? просто запросом нельзя обойтись?
SELECT tp.student_id, tp.test_id, tp.variant,
if(tp.ex_1 = tk.ex_1,1,0) ex_1,
if(tp.ex_2 = tk.ex_2,1,0) ex_2,
if(tp.ex_3 = tk.ex_3,1,0) ex_3,
if(tp.ex_4 = tk.ex_4,1,0) ex_4,
if(tp.ex_5 = tk.ex_5,1,0) ex_5,
if(tp.ex_1 = tk.ex_1,1,0)+
if(tp.ex_2 = tk.ex_2,1,0)+
if(tp.ex_3 = tk.ex_3,1,0)+
if(tp.ex_4 = tk.ex_4,1,0)+
if(tp.ex_5 = tk.ex_5,1,0) AS mark
FROM test_papers tp
JOIN test_keys tk ON tp.variant = tk.variant;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, первый раз сталкиваюсь с такой выборкойВо общем есть такая таблица user
Нужно соединить два MySQL запроса в один, помогите пожалуйста!
Есть одностраничный сайт, там есть кнопка и два поля для текста, в одно пользователь вводит текст, при нажатии на кнопку, текст должен записаться...