programing

MySql Query to Select a table, table을 반복하여 결과 테이블을 생성하기 위한 조건을 작성

javajsp 2023. 10. 16. 21:32

MySql Query to Select a table, table을 반복하여 결과 테이블을 생성하기 위한 조건을 작성

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

사용자 테이블과 워크시트 테이블이 있습니다.사용자는 매주 워크시트를 제출합니다.이제 관리자는 임의 날짜 선택 시 다중 선택된 사용자 워크시트를 보려고 합니다.

볼 수 있는 워크시트 표에서 사용자 57은 10월에 두 개의 워크시트를 제출했고, 56은 하나의 워크시트만 제출했습니다.

양식 값:

$fromDate = 01 oct 2017
$toDate = 23 oct 2017
$employees = 56, 57, 58

사용자 가입일이 사용자 테이블에 저장됩니다.사용자의 가입 날짜가 admin-selected-$fromDate보다 크면 가입 날짜가 fromDate가 됩니다.

여기서 관리자는 3주의 날짜 범위를 선택했습니다.하지만 사용자 57이 둘째 주에 합류했습니다.첫 주 동안 사용자-57이 NOT-SUBMITED로 표시됩니다.하지만 실제로 사용자는 첫 주에 가입하지 않았습니다.그 주를 건너뛰도록 말입니다.

참고 : 사용자는 일주일 동안 시트를 제출할 수 없으며, 해당 레코드만 NOT Submitted로 표시해야 합니다.

저는 이것을 PHP로 해냈고 결과를 배열로 받았습니다.하지만 저는 sql 명령어로는 이것을 할 수 없습니다.나는 이것을 페이지화를 달성하기 위한 쿼리입니다.

구현하고자 하는 논리:

$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;

이제 나는 Mysql에 동일한 논리를 구현하고자 합니다.이게 가능한가요?미리 감사드립니다.

언급URL : https://stackoverflow.com/questions/46905730/mysql-query-to-select-a-table-iterate-through-the-table-to-write-a-condition-to