2017-11-11 19 views
0

私は、タイムシート(TK.DETAIL)の束をリストしたテーブルを持っています。そのテーブルにはMSSQL同じテーブルへの2つの内部結合

それは私が成功した従業員テーブルから姓と名を引っ張るために使用することができ、従業員のIDを参照する(EMMain)

TK.DETAILテーブルも私にプロジェクトIDおよびIを示していますINNERがプロジェクトテーブル(PR)に参加することにより、そのプロジェクトの監督者IDを取得できます。

私がしようとしているのは、PRとEMMainテーブルに参加してスーパーバイザの名と姓を取得することです。

私の現在のクエリは私に従業員IDの同じ名前と姓を与えます。

私は間違っています。データなし

SELECT  tkDetail.Employee, tkDetail.WBS1, tkDetail.WBS2, tkDetail.LineItemApprovalStatus, tkDetail.LineItemApprover, PR.Supervisor, EMMain.LastName, EMMain.FirstName,EMMain.FirstName AS SupervisorFirst, EMMain.LastName AS supervisorlast 
FROM   tkDetail INNER JOIN 
         PR ON tkDetail.WBS1 = PR.WBS1 INNER JOIN 
         EMMain ON tkDetail.Employee = EMMain.Employee INNER JOIN 
         EMMain AS EMPL ON PR.Supervisor = EMMain.Employee 

WHERE (LineItemApprovalStatus is NULL) 
+0

2回目の参加から "AND PR.Supervisor = EMMain.Employee"について確認してください。 EMMain.Employee = tkDetail.Employee = PR.Supervisor – Radu

+0

それは私がよく分かりません。 EMMain.Employeeは従業員IDです。 tkDetail.EmployeeとPR.Supervisorも従業員ID – Ankh2054

+0

以下を使用してスーパーバイザ名とKastnameを取得しようとしています。 EMMain.FirstName AS SupervisorFirst、EMMain.LastName AS supervisorlas – Ankh2054

答えて

1

左かどうかを確認してください参加することができますし、その世話をします3回目の参加で再度テーブル名ではなくEMPLエイリアスを使用する必要があります

 SELECT tkDetail.Employee, tkDetail.WBS1, tkDetail.WBS2, 
    tkDetail.LineItemApprovalStatus, tkDetail.LineItemApprover, 
    PR.Supervisor, EMMain.LastName, EMMain.FirstName,SUP.FirstName AS 
     SupervisorFirst, SUP.LastName AS supervisorlast 
FROM tkDetail 
INNER JOIN PR ON tkDetail.WBS1 = PR.WBS1 
left JOIN EMMain ON tkDetail.Employee = EMMain.Employee 
left JOIN EMMain SUP ON PR.Supervisor = SUP.Employee WHERE (LineItemApprovalStatus is NULL) 
+0

こんにちはRadu、いいえstilいいえ。私は右、左/左、左/左、RGITH/RIGHT、右を試しました。 – Ankh2054

+0

私はそれを発見したと思う:) 私はSUP.FirstNAmeとSUP.LASTNAMEに変更し、また、私はSUPエイリアスに変更された最後の左の結合に変更された選択フィールドのリストで私の答えを編集してください参照してください:) – Radu

+0

Radu、男です! – Ankh2054

0

は言い難いですが、多分それはそのように動作します。この

SELECT * 
FROM tkDetail 
INNER JOIN PR ON tkDetail.WBS1 = PR.WBS1 
INNER JOIN EMMain PR.Supervisor = EMMain.Employee 
WHERE (LineItemApprovalStatus is NULL) 
0

好きです試してみてください。

SELECT tkDetail.Employee, tkDetail.WBS1, tkDetail.WBS2, tkDetail.LineItemApprovalStatus, tkDetail.LineItemApprover, PR.Supervisor, EMMain.LastName, EMMain.FirstName,EMMain.FirstName AS SupervisorFirst, EMMain.LastName AS supervisorlast 
    FROM tkDetail INNER JOIN 
    EMMain ON tkDetail.Employee = EMMain.Employee INNER JOIN 
    PR ON tkDetail.WBS1 = PR.WBS1 AND EMMain.Employee = PR.Supervisor 
    WHERE (LineItemApprovalStatus is NULL) 
+0

従業員IDと一致するようにsupervisorIDを変更します。 – Ankh2054

+0

質問の最初のバージョンと同じ条件ですか? – Radu

+0

最後の2つ結合:) SELECT tkDetail.Employee、tkDetail.WBS1、tkDetail.WBS2、tkDetail.LineItemApprovalStatus、tkDetail.LineItemApprover、PR.Supervisor、EMMain.LastName、EMMain.FirstName、EMMain.FirstName AS SupervisorFirst、EMMain.LastName as supervisorlast からtkDetail INNERがPR ON tkDetail.WBS1 = PR.WBS1が EMMain ON tkDetail.Employee = EMMain.Employee のJOIN左 を登録しようEMPL ON PR.Supervisor = EMMain.Employee (Liなど EMMain JOINの左neItemApprovalStatusがNULLです) – Radu

関連する問題