が列

2016-03-24 3 views
1

で外部キーを繰り返しこんにちは例が列

-transaction number- pk 
-id_number- fk from employees table 
-request- 
-department_request_status- 
-department_oic- fk from id_number of employees table again 
-headoffice 
-headoffice_oic- fk from id_number of employees table again 

のため私は、このデータベーステーブルを持っている私は、たとえばそれらを結合左ことができ、その後、テーブルに3つのIDの所有者の名前が表示さ?私はそれを正しく行うことができますどのように例えば

SELECT 
      table.ID_NUM, 
      table.DEP_OIC, 
      table.HeadOffc_OIC 
      employees.LNAME, ===>select this for ID_NUM,DEP_OIC, and HeadOffc_OIC 
      employees.FNAME ===>select this for ID_NUM,DEP_OIC, and HeadOffc_OIC 
     FROM leave_application 
     LEFT JOIN employees 
     WHERE leave_application.ID_NUM = employees.ID_NUM 
     LEFT JOIN employees 
     WHERE leave_application.DEP_OIC = employees.ID_NUM 

?出来ますか?または私は3つのテーブルにそれらを壊さなければならない??

答えて

0

あなたは別途leave_application表と各社員(ID_NUMBER、department_oic、headoffice_oic)に参加し、その後、テーブルとしてそれらのそれぞれを見ることができますが、今あなたはすべての3つの所有者が一列に名前を付ける必要があり、leave_applicationですべての結果を結合する左:

select leave_application.tranid, HeadOffFName, HeadOffLName, DepFName, DepLName, FName, LName from leave_application 
LEFT JOIN 
    (select TranID, FName as HeadOffFName, LName as HeadOffLName from 
    Employee inner join leave_application 
    on Employee.EmpID = leave_application.HeadOffc_OIC)Head 
    ON leave_application.TranID = Head.tranid 
left join 
    (select TranID, FName as DepFName, LName as DepLName from 
    Employee inner join leave_application 
    on Employee.EmpID = leave_application.DEP_OIC)Dep 
ON leave_application.TranID = Dep.tranid 
left join 
    (select TranID, FName, LName from 
    Employee inner join leave_application 
    on Employee.EmpID = leave_application.ID_NUM)Office 
ON leave_application.TranID = Office.tranid 
+0

この行は 'leave_application.tranid、HeadOffFName、HeadOffLName、DepFName、DepLName、FName、LNameをleave_application'から選択することを意味しますか? –

+0

HeadoffFnameはheadoffice_oicのオーナー名です。 Headのクエリ結果から –

+0

HeadOffFNameとanswerの他のフィールドを検索してください。 –