我有2张桌子。 expermiment_list
包含实验列表,expermiment_MCQ
包含该实验的几个问题。
例如:存储在expermiment_list
中的ChemistryLab01可能会在expermiment_MCQ
中存储许多问题
我可以使用此SQL创建新实验:
INSERT INTO `expermiment_list` (`exp_name`,`exp_duedate`) VALUES
('ChemistryLab01','2015/12/12'),
('ChemistryLab02','2016/11/11');
在上面的例子中,ChemistryLab01得到exp_id = 1而ChemistryLab02得到exp_id = 2. 显示如何向expermiment_MCQ
添加/插入问题,其中exp_id = 1. 这里是我的psedue-SQL :
INSERT INTO `expermiment_MCQ` (`exp_question`,`exp_option1`,`exp_option2`,`exp_option3`,
`exp_option4`,`correct_answer`) VALUES ('Whats your instructor's name?','Adam','Ben','Chris','David',
'Chris') where expermiment_list.exp_id = expermiment_MCQ.exp_id and expermiment_MCQ.exp_id = 1;
两个表结构:
CREATE TABLE IF NOT EXISTS `expermiment_list` (
`exp_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`exp_name` varchar(500) NOT NULL,
`exp_duedate` varchar(20) NOT NULL,
PRIMARY KEY (`exp_id`)
);
CREATE TABLE IF NOT EXISTS `expermiment_MCQ` (
`exp_id` int(10) unsigned,
`question_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`exp_question` varchar(5000) NOT NULL,
`exp_option1` varchar(200) NOT NULL,
`exp_option2` varchar(200) NOT NULL,
`exp_option3` varchar(200) NOT NULL,
`exp_option4` varchar(200) NOT NULL,
`correct_answer` varchar(200) NOT NULL,
PRIMARY KEY (`question_id`)
);
答案 0 :(得分:0)
你的psuedo-sql大多是正确的,虽然where语句不合适。只需将id直接插入表中,就像其他列一样:
INSERT INTO expermiment_MCQ(
exp_id,
exp_question ,
exp_option1 ,
exp_option2 ,
exp_option3 ,
exp_option4 ,
correct_answer)
VALUES (
1,
'Whats your instructor''s name?' ,
'Adam',
'Ben',
'Chris',
'David',
'Chris')
作为一般提示,我建议将你的答案分成另一张表。当您以option1,option2等结束时,您需要更改架构以处理option5 +。
我会采取以下方式:
exp_id | option_num | option | is_correct
1 | 1 | Adam | N
1 | 2 | Chris | Y
1 | 3 | David | N