0

我有两个表'talent_empcomp'和'talent_employee_details_v',我需要从'Emp_Compensation'中获取一个值,该值仅存在于'talent_empcomp'表中,但'Emp_Id'在两个表中都很常见并且具有相同的值..我需要获取下面特定“Emp_Id”的“Emp_Compensation”是正在运行的联合查询..但我收到错误消息“where 子句中的列 'Emp_Id' 不明确”

SELECT A.*, B.Emp_Compensation 
FROM talent_employee_details_v A, talent_empcomp B   
WHERE Emp_FirstName like '%' and Emp_Id='$Emp_Id' ORDER BY Emp_FirstName
4

4 回答 4

1

首先,您应该使用显式连接语法。其次,您应该使用您定义的表别名:

SELECT A.*, B.Emp_Compensation
FROM talent_employee_details_v A join
     talent_empcomp B
     on a.EmpId = B.Emp_id
WHERE A.Emp_FirstName like '%' and A.Emp_Id='$Emp_Id'
ORDER BY A.Emp_FirstName 

在列引用之前放置别名是个好主意,这样您就知道值的来源。我猜名字来自“A”。

于 2012-08-23T13:34:34.487 回答
0

当您运行连接但未指定要从哪个表中选择列时,会发生此错误。只需在列名之前指定表,例如 A.Emp_id

于 2012-08-23T13:37:16.577 回答
0

好吧,您正在尝试过滤Emp_Id列,但它存在于两个表中,因此 SQL 解释器不知道要过滤哪一列。您需要明确限定列,例如B.Emp_Id.

SELECT A.*, B.Emp_Compensation 
FROM talent_employee_details_v A, talent_empcomp B   
WHERE Emp_FirstName like '%' and B.Emp_Id='$Emp_Id' ORDER BY Emp_FirstName

顺便说一句:如果您删除like %条件,您的查询可能会运行得更快。

于 2012-08-23T13:33:13.443 回答
0
SELECT A.*, B.Emp_Compensation 
FROM talent_employee_details_v A, talent_empcomp B   
WHERE Emp_FirstName like '%' and B.Emp_Id='$Emp_Id' ORDER BY Emp_FirstName
于 2012-08-23T13:33:17.517 回答