Sql连接两个表并获取一个值

时间:2012-08-23 13:30:59

标签: php mysql sql

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

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 个答案:

答案 0 :(得分: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”。

答案 1 :(得分:0)

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

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 条件,您的查询可能会运行得更快。

答案 2 :(得分: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

答案 3 :(得分:0)

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