Php MySql查询选择一个表,遍历该表编写一个条件,生成一个结果表
我有一个用户表和工作表表。用户每周提交工作表。现在,管理员希望看到随机日期选择上的多个选定用户工作表 在您可以看到的工作表表中,用户57在10月份提交了两份工作表,56只提交了一份工作表 表单值为:Php MySql查询选择一个表,遍历该表编写一个条件,生成一个结果表,php,mysql,sql,symfony,mariadb,Php,Mysql,Sql,Symfony,Mariadb,我有一个用户表和工作表表。用户每周提交工作表。现在,管理员希望看到随机日期选择上的多个选定用户工作表 在您可以看到的工作表表中,用户57在10月份提交了两份工作表,56只提交了一份工作表 表单值为: User table : employee_id employee_name joined_date Worksheet table : id | user_id | start_date | end_date | attachment | Status 1 56
User table :
employee_id
employee_name
joined_date
Worksheet table :
id | user_id | start_date | end_date | attachment | Status
1 56 2017-10-01 2017-10-07 somefile Submitted
2 57 2017-10-08 2017-10-14 somefile Approved
3 57 2017-10-14 2017-10-21 somefile Approved
用户加入日期保存在用户表中。
如果用户的加入日期大于所选管理员-$fromDate,则加入日期将变为fromDate
在这里,管理员选择了三周的日期范围。但是用户57在第二周加入了。第一周,用户-57显示为未提交。但实际上用户在第一周没有加入。所以这一周我们可以跳过
注意:用户在一周的任何时间都不能提交工作表,只有该记录应显示为未提交
我用Php实现了这一点,并在一个数组中得到了结果。但我无法使用sql命令来实现这一点。我想做的就是实现查询分页
我想说明的逻辑是:
$fromDate = 01 oct 2017
$toDate = 23 oct 2017
$employees = 56, 57, 58
$fromDate//从Post请求
$toDate//发帖请求
$adminSelectedUsers//发帖请求
$resultSet=[];//为结果集声明
foreach($adminSelectedUsers作为$userDetail){
//决定起始日期
$joinedDate=$userDetail->joinedDate;
如果($joinedDate>=$fromDate){
$fromDate=$selectedDate;
}
$WORKEM=选择工作表,其中userid=$userDetail->employee\u id和start\u date>=$fromdate和end\u date,那么您希望实现什么呢?如果您给我们两个表的示例以及您希望看到的结果,“如果用户的加入日期大于所选的开始日期,那么加入日期将成为开始日期”…为什么?从逻辑上看,这是完全没有必要的。如果他们只在其加入日期加入
,则该用户在该日期之前不会提交任何工作表…您希望工作表是什么?您可以使用准SQL查询(选择工作表…等
)指定一个表而不是列,您的意思是类似于工作表中的工作表。*吗?您关心用户数据吗?如果不关心,您可以运行(工作版本)@inoxy,我已经在Php中实现了它,结果是数组。所以我无法进行分页。所以我试图将它转换为SQL查询,在那里我可以进行分页。这是一个2006年的symfony orange_hrm框架。那么你想实现什么呢?如果你给我们两个表和“如果用户的加入日期大于所选的开始日期,则加入日期将变为开始日期”…为什么?从逻辑上看,这是完全没有必要的。如果他们只在其加入日期加入
,则该用户在该日期之前不会提交任何工作表…您希望工作表是什么?您可以使用准SQL查询(选择工作表…等
)指定一个表而不是列,您的意思是类似于工作表中的工作表。*吗?您关心用户数据吗?如果不关心,您可以运行(工作版本)@inoxy,我已经在Php中实现了它,结果是数组。所以我无法进行分页。所以我试图将它转换为SQL查询,在那里我可以进行分页。这是一个2006年的symfony orange_hrm框架。
$fromDate; //from the Post request
$toDate; //from post request
$adminSelectedUsers; //from post request
$resultSet = []; // Declared for the result set
foreach($adminSelectedUsers as $userDetail) {
// Deciding the from date
$joinedDate = $userDetail->joined_date;
if($joinedDate >= $fromDate) {
$fromDate = $selectedDate;
}
$worksheet = select worksheet where userid=$userDetail->employee_id and start_date >= $fromdate and end_date <= $toDate;
foreach($worksheet as $worktemp) {
$resultSet[] = $worktemp;
}
}
return $resultSet;