테이블 tbl_worklog
에는 id (int), project_id (int), start_time (datetime), total (time), user_id (id)와 같은 테이블이 있습니다.데이터를 mysql을 사용하여 매일 선택하십시오.
또 다른 테이블 tbl_projects
에는 id (int), project_name (text), organization_id (int) 열이 있습니다. 첫 번째 테이블의 project_id에는 두 번째 테이블의 id에 대한 외래 키가 있습니다.
난 organization
테이블에 created_by (int) 테이블이 있습니다. 조직 테이블의 ID에는 두 번째 테이블의 organization_id에 대한 외래 키가 있습니다.
여기에 문제가 있습니다. created_by = 1 인 조직 아래에있는 모든 프로젝트의 구성원을 얻고 싶습니다. 그리고 각 구성원마다 매일 첫 번째 테이블에서 작업을하고 싶습니다. 예 :
Members | Sun | Mon | Tue | Wed | Thu | Fri | Sat | Weekly Total
---------------
John | 0:30:00 | 0:30:00 | 0:30:00 | 0:30:00 | 0:30:00 | 0:30:00 | 1:00:00 | 4:00:00
일일 작업을 계산할 수 있도록 첫 번째 테이블에서 start_time을 사용했습니다. 여기
가 작동하지 않습니다 내 쿼리,SELECT (SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(total))) AS total_time from tbl_worklog WHERE start_time < date_add('2016-09-04', INTERVAL 7 DAY) AND start_time >= '2016-09-04' AND user_id=tbl_worklog.user_id) as weekly_total,
(SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(total))) AS total_time from tbl_worklog WHERE start_time < date_add('2016-09-04', INTERVAL 1 DAY) AND start_time >= '2016-09-04' AND user_id=tbl_worklog.user_id) as sun,
(SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(total))) AS total_time from tbl_worklog WHERE start_time < date_add('2016-09-04', INTERVAL 2 DAY) AND start_time >= date_add('2016-09-04', INTERVAL 1 DAY) AND user_id=tbl_worklog.user_id) as mon,
(SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(total))) AS total_time from tbl_worklog WHERE start_time < date_add('2016-09-04', INTERVAL 3 DAY) AND start_time >= date_add('2016-09-04', INTERVAL 2 DAY) AND user_id=tbl_worklog.user_id) as tue,
(SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(total))) AS total_time from tbl_worklog WHERE start_time < date_add('2016-09-04', INTERVAL 4 DAY) AND start_time >= date_add('2016-09-04', INTERVAL 3 DAY) AND user_id=tbl_worklog.user_id) as wed,
(SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(total))) AS total_time from tbl_worklog WHERE start_time < date_add('2016-09-04', INTERVAL 5 DAY) AND start_time >= date_add('2016-09-04', INTERVAL 4 DAY) AND user_id=tbl_worklog.user_id) as thu,
(SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(total))) AS total_time from tbl_worklog WHERE start_time < date_add('2016-09-04', INTERVAL 6 DAY) AND start_time >= date_add('2016-09-04', INTERVAL 5 DAY) AND user_id=tbl_worklog.user_id) as fri,
(SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(total))) AS total_time from tbl_worklog WHERE start_time < date_add('2016-09-04', INTERVAL 7 DAY) AND start_time >= date_add('2016-09-04', INTERVAL 6 DAY) AND user_id=tbl_worklog.user_id) as sat,
(SELECT name FROM tbl_accounts WHERE id=tbl_worklog.user_id) as name FROM tbl_worklog WHERE project_id IN (SELECT id FROM tbl_projects WHERE organization_id=1)
가 간단하고 더 나은 연습을하는 다른 방법도 있습니다입니까? PDO를 사용하여 어떻게 할 수 있습니까?
예. PHP에 대해 언급 했으므로 여기에 디스플레이 문제를 처리하십시오. 훨씬 더 유연하고 확장 성이 있습니다 (이 경우에는 척도가 문제가 될 수는 없습니다) – Strawberry