4

エラー - マルチパート識別子「Grant.EmpID」をバインドできませんでした。

クエリ -

select emp.EmpID, 
COUNT(*) as CountRecords,
COUNT(GrantName) AS CountValues
From Employee as emp full join [Grant] as gr
on emp.EmpID = [Grant].EmpID 
-- This is the cause for the error ! Change it to gr.EmpID
group by emp.EmpID

なぜこのエラーが発生するのですか? 人を本名とあだ名で呼べないの?

4

2 に答える 2

6

エイリアシングしています[Grant]。つまり、これからは と[Grant]呼ばれることになりますgr

tableName ではなく、句でALIASを使用します。GROUP BY

SELECT emp.EmpID, 
       COUNT(*) as CountRecords,
       COUNT(GrantName) AS CountValues
FROM   Employee as emp 
       FULL JOIN [Grant] as gr
          on emp.EmpID = gr.EmpID  -- use the alias.
GROUP BY gr.EmpID                  -- use the alias.

SQLの操作順序は次のとおりです

  • FROM 句
  • WHERE句
  • GROUP BY 句
  • HAVING 句
  • SELECT句
  • ORDER BY 句
于 2012-12-22T05:29:21.333 に答える
0

SQLサーバーは人間ではないため、できません。自分自身を参照する Employee テーブルがあるとします。

select * 
from Employee Emp, Employee Mng
where Emp.ManagerID = Mng.EmployeeID

Mng と Emp は Employee の 2 つのインスタンスです

だから私が選択した場合

select * from Employee e, Employee

すべての従業員を 2 回返します。これはEmployee、名前e(エイリアス)の下で 1 回、名前の下で 1 回従業員を与えるように指示しているためです。

于 2012-12-22T05:41:07.947 に答える