Ключевой столбец не существует в таблице. SQL - PullRequest
0 голосов
/ 01 ноября 2018

Поэтому я попытался найти другие вопросы и попытался их решить, но не смог понять, почему мой SQL не работает. Он постоянно говорит, что таблица DepartmentID не существует, и я объявил ее своим основным ключом в 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)
);

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Проблема заключалась в том, что вы делали внешний ключ, но столбец DepartmentID не существует на той таблице, в которой вы ссылались, а второй был что ваш заказ был неверным.

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)
);
0 голосов
/ 01 ноября 2018

Проблема в том, что вы не объявили столбец DepartmentId в таблице Employee. Также сначала выполните родительскую таблицу, за которой следуют те, которые ссылаются на

 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)
 );
...