如何内部连接 ​​3 个表?

How to inner join 3 tables?

我在使用内部联接创建视图时遇到问题,我有这 3 个表

我想做的是创建一个名为 "View1" 的视图来显示这些信息:

我使用了这个查询:

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) 您必须将其他投影分组。