如何内部连接 3 个表?
How to inner join 3 tables?
我在使用内部联接创建视图时遇到问题,我有这 3 个表
- 项目(ProjID、ProjName、InitDate、EndDate)
- 员工(EmpID、EmpName、Phone、城市、薪水)
- 分配(ProjID、EmpID、时间、状态、日期)
我想做的是创建一个名为 "View1" 的视图来显示这些信息:
- (ProjID / ProjName / EmpName / Hours) 仅适用于具有
以 "N".
开头的项目 ID (ProjID)
我使用了这个查询:
CREATE OR REPLACE VIEW view1 AS
SELECT
projects.ProjID,
projects.ProjName,
employees.EmpName,
assign.Hours
FROM
assign
INNER JOIN employees ON employees.EmpID = assign.EmpID
INNER JOIN projects
WHERE
projects.ProjID LIKE "N%";
我得到的结果不起作用,它多次显示具有不同项目 ID 的同一员工
你可以使用这个查询
select *
from employees
inner join assign on employees.EmpID=assign.EmpID
inner join projects on projects.ProjID=assign.ProjID
where projects.ProjID LIKE "N%";
与您的查询不同的是,您需要建立项目和任务之间的关系。
无论如何,如果您将同一员工分配到多个与 where 子句匹配的项目,您将多次获得该员工。
也许你应该分组并使用一些聚合公式,如 sum(hours)
CREATE OR REPLACE VIEW v1 AS
(
SELECT p.ProjID, p.ProjName, e.EmpName, a.Hours
FROM Projects p
INNER JOIN Assign a ON a.ProjID=p.ProjID
INNER JOIN Emplyees e ON e.EmpID = a.EmpID
WHERE p.ProjID LIKE "N%";
);
我想提醒您,如果您将 SUM(a.Hours)
您必须将其他投影分组。
我在使用内部联接创建视图时遇到问题,我有这 3 个表
- 项目(ProjID、ProjName、InitDate、EndDate)
- 员工(EmpID、EmpName、Phone、城市、薪水)
- 分配(ProjID、EmpID、时间、状态、日期)
我想做的是创建一个名为 "View1" 的视图来显示这些信息:
- (ProjID / ProjName / EmpName / Hours) 仅适用于具有 以 "N". 开头的项目 ID (ProjID)
我使用了这个查询:
CREATE OR REPLACE VIEW view1 AS
SELECT
projects.ProjID,
projects.ProjName,
employees.EmpName,
assign.Hours
FROM
assign
INNER JOIN employees ON employees.EmpID = assign.EmpID
INNER JOIN projects
WHERE
projects.ProjID LIKE "N%";
我得到的结果不起作用,它多次显示具有不同项目 ID 的同一员工
你可以使用这个查询
select *
from employees
inner join assign on employees.EmpID=assign.EmpID
inner join projects on projects.ProjID=assign.ProjID
where projects.ProjID LIKE "N%";
与您的查询不同的是,您需要建立项目和任务之间的关系。
无论如何,如果您将同一员工分配到多个与 where 子句匹配的项目,您将多次获得该员工。 也许你应该分组并使用一些聚合公式,如 sum(hours)
CREATE OR REPLACE VIEW v1 AS
(
SELECT p.ProjID, p.ProjName, e.EmpName, a.Hours
FROM Projects p
INNER JOIN Assign a ON a.ProjID=p.ProjID
INNER JOIN Emplyees e ON e.EmpID = a.EmpID
WHERE p.ProjID LIKE "N%";
);
我想提醒您,如果您将 SUM(a.Hours) 您必须将其他投影分组。