Mysql 如何在SQL中选择不同表中的多个值?

Mysql 如何在SQL中选择不同表中的多个值?,mysql,sql,Mysql,Sql,我这里有三张桌子。用户表、员工表和报表表 用户表有4列: ID, Username, Password, Role 1 test test Admin 2 branch branch Manager 3 hello hello Manager ID, Firstname, Lastname, Supervisor_ID 1 test test 2 branch branch 3

我这里有三张桌子。用户表、员工表和报表表

用户表有4列:

ID, Username, Password, Role
1    test       test    Admin
2    branch     branch  Manager
3    hello      hello   Manager
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_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
Employee表有4列:

ID, Username, Password, Role
1    test       test    Admin
2    branch     branch  Manager
3    hello      hello   Manager
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_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
报表表有4列:

ID, Username, Password, Role
1    test       test    Admin
2    branch     branch  Manager
3    hello      hello   Manager
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_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);
例如: 我登录了ID为2的分支。现在,我想查看我的ID和我监督下的其他员工(agent1和agent2)的报告。

试试以下方法:

SELECT * FROM Report
WHERE Employee_ID IN (
   SELECT T1.Id from Employee T1
   WHERE T1.supervisor_id = **MyId**)
这将为您提供以MyId为主管的所有员工的报告。 如果还想添加MyId报告,只需在查询或子查询中添加OR子句:

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

您可能想看看
JOIN
s非常感谢!我不知道您还可以在select语句中生成另一个select语句。现在我知道了。这是我知识的又一个补充。