简体   繁体   中英

Key column does not exist in table. SQL

So I tried looking up other questions and tried them, but I was not able to figure out why my SQL was not working. It keeps saying that DepartmentID table does not exist and I have it declared as my primary key under Department.

CREATE TABLE EMPLOYEE(
SSN INT NOT NULL,
WorkID INT NOT NULL,
BirthDate DATE NOT NULL,
Name VARCHAR(20) NOT NULL,
UNIQUE(WorkID),
PRIMARY KEY(SSN),
FOREIGN KEY(DepartmentID) REFERENCES DEPARTMENT(DepartmentID),
FOREIGN KEY(DeviceID) REFERENCES DEVICE(DeviceID)
);

CREATE TABLE DEPARTMENT(
DepartmentID INT NOT NULL,
DepartmentName VARCHAR (20) NOT NULL,
PRIMARY KEY(DepartmentID),
UNIQUE(DepartmentName)
);

CREATE TABLE PRODUCT(
ProductID INT NOT NULL,
Name VARCHAR(20) NOT NULL,
Isle VARCHAR(5) NOT NULL,
Company VARCHAR(20) NOT NULL,
PRIMARY KEY(ProductID),
FOREIGN KEY(DepartmentID) REFERENCES DEPARTMENT(DepartmentID)
);


CREATE TABLE DEVICE(
DeviceID INT NOT NULL,
DateReceived DATE NOT NULL,
PRIMARY KEY(DeviceID)
);

CREATE TABLE SALES(
SalesID INT NOT NULL,
Profit INT NOT NULL,
Revenue INT NOT NULL,
PRIMARY KEY(SalesID)
);

CREATE TABLE AmountSold(
FOREIGN KEY (SalesID) REFERENCES SALES(SalesID),
FOREIGN KEY (ProductID) REFERENCES PRODUCT(ProductID)
);

The problem was that you were making foreign key but the column DepartmentID doesn't exist on that table in which you were referencing and the second was that your order wasn't correct.

CREATE TABLE DEPARTMENT(
DepartmentID INT NOT NULL,
DepartmentName VARCHAR (20) NOT NULL,
PRIMARY KEY(DepartmentID),
UNIQUE(DepartmentName)
);

CREATE TABLE DEVICE(
DeviceID INT NOT NULL,
DateReceived DATE NOT NULL,
PRIMARY KEY(DeviceID)
);

CREATE TABLE EMPLOYEE(
SSN INT NOT NULL,
WorkID INT NOT NULL,
BirthDate DATE NOT NULL,
DepartmentID INT NOT NULL,
DeviceID INT NOT NULL,
Name VARCHAR(20) NOT NULL,
UNIQUE(WorkID),
PRIMARY KEY(SSN),
FOREIGN KEY(DepartmentID) REFERENCES DEPARTMENT(DepartmentID),
FOREIGN KEY(DeviceID) REFERENCES DEVICE(DeviceID)
);



CREATE TABLE PRODUCT(
ProductID INT NOT NULL,
Name VARCHAR(20) NOT NULL,
DepartmentID INT NOT NULL,
Isle VARCHAR(5) NOT NULL,
Company VARCHAR(20) NOT NULL,
PRIMARY KEY(ProductID),
FOREIGN KEY(DepartmentID) REFERENCES DEPARTMENT(DepartmentID)
);




CREATE TABLE SALES(
SalesID INT NOT NULL,
Profit INT NOT NULL,
Revenue INT NOT NULL,
PRIMARY KEY(SalesID)
);

CREATE TABLE AmountSold(
FOREIGN KEY (SalesID) REFERENCES SALES(SalesID),
FOREIGN KEY (ProductID) REFERENCES PRODUCT(ProductID)
);

The problem here you didn't declared the DepartmentId column in Employee table. Also execute the parent table first followed by the ones referring

 CREATE TABLE DEPARTMENT(
 DepartmentID INT NOT NULL,
 DepartmentName VARCHAR (20) NOT NULL,
 PRIMARY KEY(DepartmentID)
 );

 CREATE TABLE DEVICE(
 DeviceID INT NOT NULL,
 DateReceived DATE NOT NULL,
 PRIMARY KEY(DeviceID)
 );

 CREATE TABLE EMPLOYEE(
 SSN INT NOT NULL,
 WorkID INT NOT NULL,
 BirthDate DATE NOT NULL,
 Name VARCHAR(20) NOT NULL,
 DepartmentID INT,
 DeviceID INT ,
 UNIQUE(WorkID),
 PRIMARY KEY(SSN),
 FOREIGN KEY(DepartmentID) REFERENCES DEPARTMENT(DepartmentID),
 FOREIGN KEY(DeviceID) REFERENCES DEVICE(DeviceID)
 );

 CREATE TABLE PRODUCT(
 ProductID INT NOT NULL,
 Name VARCHAR(20) NOT NULL,
 Isle VARCHAR(5) NOT NULL,
 Company VARCHAR(20) NOT NULL,
 DepartmentID INT,
 PRIMARY KEY(ProductID),
 FOREIGN KEY(DepartmentID) REFERENCES DEPARTMENT(DepartmentID)
 );

 CREATE TABLE SALES(
 SalesID INT NOT NULL,
 Profit INT NOT NULL,
 Revenue INT NOT NULL,
 PRIMARY KEY(SalesID)
 );

 CREATE TABLE AmountSold(
 SalesId INT NOT NULL,
 ProductId INT NOT NULL,
 FOREIGN KEY (SalesID) REFERENCES SALES(SalesID),
 FOREIGN KEY (ProductID) REFERENCES PRODUCT(ProductID)
 );

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM