0

「talent_empcomp」と「talent_employee_details_v」の2つのテーブルがあり、「talent_empcomp」テーブルにのみ存在する「Emp_Compensation」から値をフェッチする必要がありますが、「Emp_Id」は両方のテーブルで共通であり、同じ値を持っています。フェッチする必要があります。以下の特定の「Emp_Id」の「Emp_Compensation」は、実行中の共同クエリiamですが、iamはエラーメッセージ「Column'Emp_Id'inwhere句があいまいです」を受け取ります。

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

さて、あなたは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 に答える
0

このエラーは、結合を実行し、列を選択するテーブルを指定していない場合に発生します。必要なのは、A.Emp_idのように、列名の前にテーブルを指定することだけです。

于 2012-08-23T13:37:16.577 に答える