以下のようなsqlで本日から1週間分の勤怠データをとってくるようにしたいのですが
存在しない場合もdate_format(now(), '%Y.%m.%d')だけ残して空の情報を取得したいのですが、可能なのでしょうか
a_clock_in_schedule_dateは勤怠の出社時間を入れております
PHPのプログラムなのですが、ない場合、いちいち配列からないかどうか探すのは
負荷がかかってしまうので、sqLで対応したいと考えております
SELECT *,date_format(now(), '%Y.%m.%d') as date FROM tr_attendance
LEFT JOIN m_staff on m_staff.s_id = tr_attendance.s_id
WHERE a_clock_in_schedule_date
between date_format(now(), '%Y.%m.%d') and date_add(date(now()), interval 6 day)
ORDER BY m_staff.s_id
以下にテーブル情報を載せさせていただきます
CREATE TABLE `tr_attendance` ( `a_id` VARCHAR(32) NOT NULL COMMENT '勤怠ID', `s_id` VARCHAR(32) NULL DEFAULT NULL COMMENT 'スタッフID', `a_clock_in_schedule_date` DATETIME NULL DEFAULT NULL COMMENT '出勤時間', `a_clock_out_schedule_date` DATETIME NULL DEFAULT NULL COMMENT '退勤時間', `delete_flg` VARCHAR(1) NULL DEFAULT '0' COMMENT '削除フラグ', `create_id` VARCHAR(16) NULL DEFAULT NULL COMMENT '作成者ID', `create_datetime` DATETIME NULL DEFAULT NULL COMMENT '作成日時', `update_id` VARCHAR(16) NULL DEFAULT NULL COMMENT '更新者ID', `update_datetime` DATETIME NULL DEFAULT NULL COMMENT '更新日時', PRIMARY KEY (`a_id`) ) COMMENT='勤怠情報' COLLATE='utf8_general_ci' ENGINE=InnoDB ;
CREATE TABLE `m_staff` ( `s_id` VARCHAR(32) NOT NULL COMMENT 'スタッフID', `s_position` VARCHAR(32) NULL DEFAULT NULL COMMENT '役職', `s_first_name` VARCHAR(32) NULL DEFAULT NULL COMMENT '姓(漢字)', `s_last_name` VARCHAR(32) NULL DEFAULT NULL COMMENT '名(漢字)', `s_first_name_kana` VARCHAR(50) NULL DEFAULT NULL COMMENT '姓(かな)', `s_last_name_kana` VARCHAR(50) NULL DEFAULT NULL COMMENT '名(かな)', `s_import_text` TEXT NULL COMMENT '備考(重要)', `s_text` TEXT NULL COMMENT '備考', `delete_flg` VARCHAR(1) NULL DEFAULT '0' COMMENT '削除フラグ', `create_id` VARCHAR(16) NULL DEFAULT NULL COMMENT '作成者ID', `create_datetime` DATETIME NULL DEFAULT NULL COMMENT '作成日時', `update_id` VARCHAR(16) NULL DEFAULT NULL COMMENT '更新者ID', `update_datetime` DATETIME NULL DEFAULT NULL COMMENT '更新日時', PRIMARY KEY (`s_id`) ) COMMENT='スタッフ情報' COLLATE='utf8_general_ci' ENGINE=InnoDB ;