我正在爲我們公司的員工開發一個Web應用程序。基於他們具有的某些培訓和他們閱讀的程序,某個員工可以被授權在某個項目中工作。SQL - 獲取某些項目的員工授權級別
我有幾個表:
- vw_Employee(存儲所有員工記錄,並具有識別稱爲「Sicil」主鍵)
- tbl_yet_Proje(店當時在該公司提供的所有項目並具有所謂的「PROJ_ID」)
- tbl_yet_ProjeEgitim(存儲訓練對於給定項目的先決條件的初級識別密鑰,存儲兩個識別的鍵:一個是PROJ_ID,另一個是TR_ID識別需要哪些訓練爲相應的項目)
- tbl_yet_ProjeProsedur(就像tbl_yet_ProjeEgitim這一個給定項目存儲過程的先決條件,存儲兩個識別的鍵:一個是PROJ_ID,另一個是Pros_ID識別需要哪些程序相應的項目)
- tbl_yet_EmployeeEgitim和tbl_yet_EmployeeProsedur(就像tbl_yet_ProjeEgitim以及tbl_yet_ProjeProsedur這兩名員工分別參加了哪些培訓並閱讀了哪些程序。他們分別存儲兩個識別碼:「Sicil」分別識別員工和TR_ID和Pros_ID,查看他們得到的培訓或他們閱讀的過程)
我想選擇一個簡單顯示「Sicil 「和他們可以工作的項目的」Proj_ID「。這意味着他們至少接受了培訓並閱讀了作爲項目前提的程序。如果他們做得比這更多,那就沒問題。我想爲整個數據庫做這件事,並找到每個員工的項目,他們被自動化並可能工作。
我已經在我的SQL查詢中得到了這個,但它不準確。我猜測它有這麼多聯合行動有關:
SELECT DISTINCT emp.Sicil, proj.Proj_ID
FROM tbl_yet_Proje proj FULL OUTER JOIN tbl_yet_ProjeEgitim pe ON proj.Proj_ID = pe.Proj_ID
INNER JOIN tbl_yet_ProjeProsedur pp on proj.Proj_ID = pp.Proj_ID
INNER JOIN tbl_yet_EmployeeEgitim ee ON pe.TR_ID = ee.TR_ID
INNER JOIN tbl_yet_EmployeeProsedur ep ON ep.Pros_ID = pp.Pros_ID
INNER JOIN vw_Employee emp ON emp.Sicil = ep.Sicil AND emp.Sicil = ee.Sicil
任何人都可以幫助我嗎? 非常感謝你
??? MySQL或SQLServer?請不要垃圾標籤 – RiggsFolly
這是一個SQLServer對不起,我剛剛編輯它 –
如果你不想從任何表中返回空值,那麼你需要內部連接,而不是全部外部。 – Jayvee