共有3个表:
CREATE TABLE Employee(
EID mediumint PRIMARY KEY AUTO_INCREMENT,
EName varchar(100) DEFAULT NULL,
EPincode mediumint unsigned NULL
);
eid是每个员工的唯一员工id;
CREATE TABLE Project(
PID mediumint PRIMARY KEY AUTO_INCREMENT,
PName varchar(30) DEFAULT NULL,
MID mediumint UNIQUE NOT NULL,
FOREIGN KEY (MID) REFERENCES Employee(EID)
);
mid是负责项目的员工的经理id。
CREATE TABLE Works_On(
EID mediumint NOT NULL,
PID mediumint NOT NULL,
FOREIGN KEY (EID) REFERENCES Employee(EID),
FOREIGN KEY (PID) REFERENCES Project(PID)
);
此表包含所有员工及其相关项目。
一个员工可以从事多个项目。一个项目可以由多个员工完成。每个项目都有一个经理。经理可以有一个或多个下属。
我想找一个由雇员姓名、项目名称和经理姓名组成的表。请帮忙。
这是我迄今为止编写的查询,但它不起作用:
SELECT DISTINCT A.EName AS "Employee Name"
,A.PName AS "Project Name"
,B.EName AS "Manager Name"
FROM (SELECT P.PName
,E.EName
from Works_On W
NATURAL JOIN Project P
NATURAL JOIN Employee E) A,
(SELECT E.EName
from Project P
INNER JOIN Employee E ON P.MID = E.EID) B
3条答案
按热度按时间7z5jn7bk1#
mepcadol2#
成功了。
pu82cl6c3#
你可以试试下面的查询-
这也许对你有帮助。