Employee、Manager、Branch、Division、Employee_historyのような類似したテーブルがあります
そして、2つのテーブルEmployeeとManagerがemployee_id、name、branch_idなどの特定の列を共有するとします。
ブランチテーブルにはbranch_idがあります
除算テーブルにはdivision_idがあります
Employee_historyにはemp_hist_idがあります。これらのテーブルはすべて1対多の関係です
LINQに変換したいSQLは
select b.branch_id, e.employee_id
from division d
join branch b on d.division_id = b.division_id
join
( select employee_id, branch_id
from EMPLOYEE
UNION
select employee_id, branch_id
from MANAGER
) e
on e.branch_id = b.branch_id
join EMPLOYEE_HISTORY eh on eh.employee_id = e.employee_id
UNIONを実行してから参加するにはどうすればよいですか。私は自分が持っているものよりも単純化されたバージョンのSQLを配置しました。私の実際のSQLでは、ブランチテーブルの前に2つまたは3つの結合があり、ユニオンの後に1つの結合があります
そして私のLINQは(実際のコードに似ています)のように見えます
from division in divisions
join brnch in Branch on division.division_id equals brnch.division_id
join empl in (
from emplyee in Employee select new { EmployeeId = emplyee.employee_id}, BrnachId = branch_id).Union(
from mngr in Manager select new { EmployeeId = mngr.employee_id, BrnachId = branch_id)
on brnch.branch_id equals empl.BranchId
join emplhistory in EMPLOYEE_HISTORY on empl.EmployeeId equals emplhistory.employee_id
where division.division_type_id = 10
select new
{
//...
}
エラーが発生しました:
join句の式の1つの型が正しくありません。'Join'の呼び出しで型推論が失敗しました。
'join empl in('で始まる行