Php MySql查询选择一个表,遍历该表编写一个条件,生成一个结果表

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

我有一个用户表和工作表表。用户每周提交工作表。现在,管理员希望看到随机日期选择上的多个选定用户工作表

在您可以看到的工作表表中,用户57在10月份提交了两份工作表,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;