2014-08-28 75 views
-1

我在這裏有3張桌子。用戶表,員工表和報表。如何在SQL中的不同表中選擇多個值?

用戶表有4列:

ID, Username, Password, Role 
1 test  test Admin 
2 branch  branch Manager 
3 hello  hello Manager 

Employee表中有4列:

ID, Firstname, Lastname, Supervisor_ID 
1 test  test  
2 branch  branch 
3 hello  hello 
4 agent1  agent1  2 
5 agent2  agent2  2 
6 agent3  agent3  3 
7 agent4  agent4  3 

報告表有4列:

Report_ID, ID, Branch_ID, Client_ID 
    1  1  1   1 
    2  2  1   1 
    3  3  2   3 
    4  4  1   2 
    5  5  3   4 
    6  6  3   2 
    7  7  2   5 

現在,我想所需的輸出如果登錄的用戶是經理,那麼他可以看到的報告只是他的下的報告和他監督下的代理人。我在這裏有一個代碼只從表中選擇兩個值。

 $user = $_SESSION['username']; 

     $statement="SELECT * FROM user WHERE Username='".$user."'"; 
     $result1 = mysqlparser($statement, $db); 

     $id = $result1[0]['Employee_ID']; 

     $statement="SELECT * FROM employee WHERE Supervisor_ID='".$id."'"; 
     $result2 = mysqlparser($statement, $db); 

     $id1 = $result2[0]['Employee_ID']; 


     $statement = "SELECT * FROM report WHERE DATE(`Report_Timestamp`) = CURDATE() AND Employee_ID='".$id."' OR Employee_ID='".$id1."'"; 
     $result = mysqlparser($statement, $db); 

例如: 我登錄其中有2。現在我想看到從我的ID我的監督下,這是AGENT1和agent2報告和其他員工的ID分支。

+2

你可能想看看'JOIN's HTTP://www.sitepoint。 com/understanding-sql-joins-mysql-database/ – hsan 2014-08-28 08:37:14

回答

1

試試這個:

SELECT * FROM Report 
WHERE Employee_ID IN (
    SELECT T1.Id from Employee T1 
    WHERE T1.supervisor_id = **MyId**) 

這會給你所有具有身份識別碼爲監控員工的報告。 如果你想添加身份識別碼報告,以及,只需添加一個OR子句中的查詢或子查詢:

SELECT * FROM Report 
WHERE Employee_ID IN (
    SELECT T1.Id from Employee T1 
    WHERE T1.supervisor_id = **MyId**) 
OR Employee_Id = **MyId** 
+0

非常感謝!我不知道你仍然可以在select語句中創建另一個select語句。現在我明白了。另一個補充我的知識。 – user3771102 2014-08-28 09:13:23

相關問題