2014-08-28 3 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 

Report Таблица имеет 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 

Теперь желаемый результат, что я хочу заключается в том, что если пользователь, который является логином, является менеджером, то отчеты, которые он может видеть, это только отчеты под его ID и агентами под его наблюдением. У меня есть код, который выбирает только два значения из таблиц.

 $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. Теперь я хочу, чтобы увидеть отчеты моего удостоверения личности и других сотрудников под моим руководством, которые agent1 и agent2.

+2

Вы можете посмотреть на 'JOIN's Http: //www.sitepoint. com/understanding-sql-joins-mysql-database/ – hsan

ответ

1

Попробуйте это:

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

Это даст вам отчеты всех сотрудников, которые имеют MyId в качестве руководителя. Если вы хотите добавить MyId отчеты, а также, просто добавьте пункт или в запросе или в подзапрос:

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

Смежные вопросы