2016-02-13 38 views
0

我需要一些幫助來構建這個sql查詢。 這是我的測試用戶表。它是通過 DEPTIDSQL:需要幫助查詢2個表之間的構造

的情況是這樣的連接到部門表,用戶會要求的東西,會在需要批准的由存儲在驗證表另一個批准用戶。 這些請求將存儲在請求表中,並且狀態爲未批准,直到獲得批准用戶批准爲止。 我需要做的就是創建一個SQL查詢來查找請求表的所有要求它有一個批准狀態,並從驗證表

過濾例如,如果我是進入用戶名玫瑰是3我會看到請求肥皂因爲她被分配在維護和執行部門發現在身份驗證表。而且,如果我要輸入Jennifer的UserID,那麼我只能看到請求Candy,因爲她被分配到身份驗證表中的指導部門。

當與驗證表連接已經我只能過濾通過請求狀態批准但未請求。

SELECT u.ReqID, u.ReqName, d.dept_name,u.ReqStatus 
FROM Request u,Department d 
where u.DeptID = d.DeptID AND u.ReqStatus = 'Approved' 

這是SQL小提琴鏈接:SQL Fiddle

感謝。

enter image description here

這是我的部門表

enter image description here

這是我的請求表

enter image description here

這是我的驗證表

enter image description here

+0

在sqlfiddle的表是從問題的那些非常不同。 'Requests'和'Authentication'表中沒有'dept_name'列,'Auth'中沒有'name'列。很混亂。 – Barmar

+0

每個表都通過它們的主鍵連接。表名可以通過SQL Fiddle鏈接看到@Barmar感謝您的上一個答案我能夠通過簡單的調整使其工作:D –

回答

0

首先,使用JOINs。他們更有效率。

如果你想要這個字段

u.ReqID, u.ReqName, d.dept_name,u.ReqStatus 

使用此查詢

SELECT u.ReqID, u.ReqName, d.dept_name,u.ReqStatus 
FROM Request u INNER JOIN Department d ON u.DeptID = d.DeptID 
WHERE u.ReqStatus Like 'Approved' 

如果希望用戶名使用此查詢。

SELECT u.ReqID, u.ReqName, d.dept_name,u.ReqStatus, a.UserID, us.name 
FROM Request u INNER JOIN Department d ON u.DeptID = d.DeptID 
INNER JOIN Auth a ON u.DeptID = a.DeptID INNER JOIN Users us 
ON a.UserID = us.UserID 
WHERE u.ReqStatus Like 'Approved' 

對不起,我忘了,如果你想成爲一個特定的用戶,使用此查詢:

SELECT u.ReqID, u.ReqName, d.dept_name,u.ReqStatus, a.UserID, us.name 
FROM Request u INNER JOIN Department d ON u.DeptID = d.DeptID 
INNER JOIN Auth a ON u.DeptID = a.DeptID INNER JOIN Users us 
ON a.UserID = us.UserID 
WHERE u.ReqStatus Like 'Approved' AND a.UserID = 2 
+0

感謝:D它的工作原理。 .. –