Mysql 如何在SQL中选择不同表中的多个值?
我这里有三张桌子。用户表、员工表和报表表 用户表有4列: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
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语句。现在我知道了。这是我知识的又一个补充。