2016-12-14 112 views
0

因此,这是我的项目,我们在表CLASS SCHEDULE中有2个外键。 但每当我试着输入代码将外键值插入表

INSERT INTO ClassSchedule (Class_Schedule_ID, Class_Date, Class_Time, University_ID_Number) 
VALUES 
('88','22/12/16','12:00', (select University_ID_Number FROM STUDENT WHERE University_ID_Number = 15567)); 

我得到了“字段列表”错误的未知列“University_ID_Number”。 有什么帮助吗? 下面的代码

-- Create Database 
CREATE DATABASE TimeTurn; 
USE TimeTurn; 

-- Student Table 
CREATE TABLE Student (
    `Students_ID` INT NOT NULL, 
    `University_ID_Number` INT NOT NULL, 
    `First_Name` VARCHAR(10) NOT NULL, 
    `Last_Name` VARCHAR(10) NOT NULL, 
    `University` VARCHAR(45) NOT NULL, 
    `Student_Year` YEAR NOT NULL, 
    `Telephone_Number` INT NOT NULL, 
    PRIMARY KEY (`Students_ID`), 
    UNIQUE INDEX `University_ID_Number_UNIQUE` (`University_ID_Number` ASC)); 

-- Class Table 
CREATE TABLE Class (
    `Class_ID` INT NOT NULL, 
    `Class_Name` VARCHAR(20) NOT NULL, 
    `Class_Major` VARCHAR(45) NOT NULL, 
    `Class_Number` INT NOT NULL, 
    `Class_Description` VARCHAR(45) NOT NULL, 
    `Professor_Name` VARCHAR(20) NOT NULL, 
    PRIMARY KEY (`Class_ID`), 
    UNIQUE INDEX `Major_ID_UNIQUE` (`Class_ID` ASC)); 

-- CLass Schedule Table 
CREATE TABLE ClassSchedule (
    `Class_Schedule_ID` VARCHAR(10) NOT NULL, 
    `STUDENTS_Students_ID` INT NOT NULL, 
    `CLASS_Class_ID` INT NOT NULL, 
    `Class_Date` DATE NOT NULL, 
    `Class_Time` TIME NOT NULL, 
    PRIMARY KEY (`Class_Schedule_ID`), 
    UNIQUE INDEX `Class_Schedule_ID_UNIQUE` (`Class_Schedule_ID` ASC), 
    CONSTRAINT `fk_CALSS SCHEDULE_STUDENTS` 
    FOREIGN KEY (`STUDENTS_Students_ID`) 
    REFERENCES `TimeTurn`.`STUDENT` (`Students_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `fk_CALSS SCHEDULE_CLASS1` 
    FOREIGN KEY (`CLASS_Class_ID`) 
    REFERENCES `TimeTurn`.`CLASS` (`Class_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION); 

-- Club Table 
CREATE TABLE Club (
    `Club_ID` INT NOT NULL, 
    `Club_Name` VARCHAR(20) NOT NULL, 
    `Club_Location` VARCHAR(45) NOT NULL, 
    `Club_Description` VARCHAR(45) NOT NULL, 
    PRIMARY KEY (`Club_ID`)); 

-- Club Schedule Table 
CREATE TABLE ClubSchedule (
    `Club_Schedule_ID` INT NOT NULL, 
    `STUDENTS_Students_ID` INT NOT NULL, 
    `CLUB_Club_ID` INT NOT NULL, 
    `Club_Name` VARCHAR(20) NOT NULL, 
    `Club_Time` TIME NOT NULL, 
    `Club_Date` DATE NOT NULL, 
    PRIMARY KEY (`Club_Schedule_ID`), 
    UNIQUE INDEX `Club_Schedule_ID_UNIQUE` (`Club_Schedule_ID` ASC), 
    CONSTRAINT `fk_CLUB SCHEDULE_STUDENTS1` 
    FOREIGN KEY (`STUDENTS_Students_ID`) 
    REFERENCES `TimeTurn`.`STUDENT` (`Students_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `fk_CLUB SCHEDULE_CLUB1` 
    FOREIGN KEY (`CLUB_Club_ID`) 
    REFERENCES `TimeTurn`.`CLUB` (`Club_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION); 

-- Job Table 
CREATE TABLE Job (
    `Job_ID` INT NOT NULL, 
    `Job_Name` VARCHAR(20) NOT NULL, 
    `Job_Location` VARCHAR(20) NOT NULL, 
    `Job_Description` VARCHAR(45) NOT NULL, 
    PRIMARY KEY (`Job_ID`), 
    UNIQUE INDEX `Job_ID_UNIQUE` (`Job_ID` ASC)) 
ENGINE = InnoDB; 

-- Work Schedule Table 
CREATE TABLE WorkSchedule (
    `Work_Schedule_ID` INT NOT NULL, 
    `STUDENTS_Students_ID` INT NOT NULL, 
    `JOB_Job_ID` INT NOT NULL, 
    `Work_Name` VARCHAR(20) NOT NULL, 
    `Work_Time` TIME NOT NULL, 
    `Work_Date` DATE NOT NULL, 
    PRIMARY KEY (`Work_Schedule_ID`), 
    UNIQUE INDEX `Work_Schedule_ID_UNIQUE` (`Work_Schedule_ID` ASC), 
    CONSTRAINT `fk_WORK SCHEDULE_STUDENTS1` 
    FOREIGN KEY (`STUDENTS_Students_ID`) 
    REFERENCES `TimeTurn`.`STUDENT` (`Students_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `fk_WORK SCHEDULE_JOB1` 
    FOREIGN KEY (`JOB_Job_ID`) 
    REFERENCES `TimeTurn`.`JOB` (`Job_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION); 

-- Event Table 
CREATE TABLE Event (
    `Event_ID` INT NOT NULL, 
    `Event_Name` VARCHAR(20) NOT NULL, 
    `Event_Location` VARCHAR(20) NOT NULL, 
    `Event_Description` VARCHAR(45) NOT NULL, 
    PRIMARY KEY (`Event_ID`)); 

-- Social Schedule Table 
CREATE TABLE SocialSchedule (
    `Social_Schedule_ID` INT NOT NULL, 
    `STUDENTS_Students_ID` INT NOT NULL, 
    `EVENT_Event_ID` INT NOT NULL, 
    `Social_Activity_Time` TIME NOT NULL, 
    `Social_Activity_Date` DATE NOT NULL, 
    PRIMARY KEY (`Social_Schedule_ID`), 
    UNIQUE INDEX `Social_Schedule_ID_UNIQUE` (`Social_Schedule_ID` ASC), 
    CONSTRAINT `fk_SOCIAL SCHEDULE_STUDENTS1` 
    FOREIGN KEY (`STUDENTS_Students_ID`) 
    REFERENCES `TimeTurn`.`STUDENT` (`Students_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `fk_SOCIAL SCHEDULE_EVENT1` 
    FOREIGN KEY (`EVENT_Event_ID`) 
    REFERENCES `TimeTurn`.`EVENT` (`Event_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION); 
+0

您的表ClassSchedule没有名为“University_ID_Number”的列。我错过了你的困惑吗? – Anand

+0

此外,这不是你想要的 - '''select University_ID_Number FROM STUDENT WHERE University_ID_Number = 15567''' – Anand

+0

University_ID_Number在STUDENT表中。我知道它是。但是我找不到将University_ID_Number值引用到我的CLASS SCHEDULE表的方法。如果有帮助,学生的价值已经在数据库中。 – darkpunk

回答

0

与University_ID_Number键创建计划表类。考虑为大学创建一个维度表,与Student表中的大学信息分开,以便应用不要重复自己的最佳做法。

-- CLass Schedule Table 
CREATE TABLE ClassSchedule (
    `Class_Schedule_ID` VARCHAR(10) NOT NULL, 
    `STUDENTS_Students_ID` INT NOT NULL, 
    `CLASS_Class_ID` INT NOT NULL, 
    `Class_Date` DATE NOT NULL, 
    `Class_Time` TIME NOT NULL, 
    'University_ID_Number' VARCHAR(10) NOT NULL -- add this 
    PRIMARY KEY (`Class_Schedule_ID`), 
    UNIQUE INDEX `Class_Schedule_ID_UNIQUE` (`Class_Schedule_ID` ASC), 
    CONSTRAINT `fk_CALSS SCHEDULE_STUDENTS` 
    FOREIGN KEY (`STUDENTS_Students_ID`) 
    REFERENCES `TimeTurn`.`STUDENT` (`Students_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `fk_CALSS SCHEDULE_CLASS1` 
    FOREIGN KEY (`CLASS_Class_ID`) 
    REFERENCES `TimeTurn`.`CLASS` (`Class_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION); 
+0

这或我正在经历它,它看起来像只有Student_ID和Class_ID是外国人,所以我试图添加University_ID_Number的东西不会工作,除非我将它添加到课程表中。 – darkpunk

+0

嗯,我试着用Student ID''INSERT INTO ClassSchedule(Class_Schedule_ID,Class_Date,Class_Time,Student_ID) VALUES ('88','22/12/16','12:00','60093345');并且不在此处工作 – darkpunk

+0

确保您的INSERT语句具有正确的数据类型。当您插入INSERT或只有VARCHAR类型的数据时,是否需要INT引号? – JL82559