我在使用Inner Join创建视图时遇到问题,我有这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的同一员工
答案 0 :(得分:1)
您可以使用此查询
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子句匹配的项目,您将不止一次获得该员工。 也许你应该分组并使用一些聚合公式,如总和(小时)
答案 1 :(得分:0)
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) 你必须将其他预测分组。