我正在尝试通过连接创建两个表中的视图,我使用的方法但是我仍然收到此错误:
Msg 4506,Level 16,State> 1,Procedure vw_Employee,Line 3 [Batch Start Line 19]
每个视图或函数中的列名必须是唯一的。视图或函数“vw_Employee”中的列名“empNumber”被多次指定。
我的观点如下:
create view vw_Employee as
(
select *
from Employees e1
inner join EmpInfo e2 on e2.empNumber = e1.empNumber
)
答案 0 :(得分:3)
这是因为这两个表都有empNumber
列,您正在使用*
进行选择。 select中的列名中不应存在任何歧义/冲突。假设唯一的常用列名是empNumber。
create view vw_Employee as
(
select * from Employees e1 inner join EmpInfo e2
using (empNumber)
)
我建议您明确列出您需要的所有列名称。
create view vw_Employee as
(
select e1.empNumber, . . .
from Employees e1 inner join EmpInfo e2
on e2.empNumber = e1.empNumber
)
根据您的评论,尝试:
create view vw_Employee
as
(
select e1.empNumber,
e1.firstName,
e1.lastName,
e1.ssn,
e1.job,
e1.projectId,
e2.[address],
e2.[state],
e2.zip,
from Employees e1
inner join EmpInfo e2 on e2.empNumber = e1.empNumber
)
答案 1 :(得分:1)
您必须在select query中写入列名,并且只能使用e1.empNumber