我在我的數據庫中有這種結構。我需要建立一個員工姓名清單,然後是他們的部門和辦公室名稱。現在我來此查詢:查詢中的SQL查詢
ALTER PROCEDURE FilterEmpList
@empName nvarchar(250) = null,
@empDepID int = null,
@empOfficeID int = null,
@empPosID int = null
AS
BEGIN
SELECT
E.emp_id AS 'emp_id',
E.emp_name AS 'emp_name',
(SELECT pos_name FROM Positions WHERE pos_id=EP.pos_id) AS 'pos_name',
(SELECT dep_name FROM Departments WHERE dep_id=OS.dep_id) AS 'dep_name',
(SELECT office_name FROM Offices WHERE office_id=OS.office_id) AS 'office_name'
FROM
Org_Structure OS INNER JOIN (Emp_Positions EP INNER JOIN Employees E ON EP.emp_id=E.emp_id) ON OS.chain_id=EP.chain_id
WHERE
(E.emp_name LIKE '%'[email protected]+'%' OR @empName IS NULL)
AND
(OS.dep_id = @empDepID OR @empDepID IS NULL)
AND
(OS.office_id = @empOfficeID OR @empOfficeID IS NULL)
AND
(EP.pos_id = @empPosID OR @empPosID IS NULL)
END
當我執行這種方式EXEC FilterEmpList,出現錯誤:無效的對象名稱EP「。
這對我來說非常困難,這個查詢是我的最大功課,並且讓我度過了一整天......請幫助我提供建議。
下一個問題
現在,我已經有了這個查詢多了一個問題。如果Org_Structure中的office_id或dep_id爲NULL,則根本不會返回該記錄。 WHERE子句有問題。
這個問題與的解決方案,其中從句位於此我的另一主題:WHERE clause - record with a NULL column is not displayed
謝謝大家。該問題已解決
謝謝,我會在一小時內嘗試併發送反饋。 – SWA
好吧,我剛剛嘗試過你編輯過的例子,它似乎工作),我會在幾分鐘內用真實數據嘗試它。 – SWA
** WHERE **有問題。如果** OS **中的某個字段爲NULL(例如,對於某些員工** office_id = NULL **,因爲它們屬於整個部門),則該員工不會出現在搜索結果中... – SWA