2017-11-29 4 views
1

私はテーブルの上にnullのレコードwhile節に他のデータを表示する方法は?

CREATE TABLE `msattendance` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `regnum` varchar(20) DEFAULT NULL, 
    `reg_b` varchar(20) DEFAULT NULL, 
    `in_hr` time NOT NULL, 
    `out_hr` time NOT NULL, 
    `in_info` varchar(20) DEFAULT NULL, 
    `out_info` varchar(20) DEFAULT NULL, 
    `in_date` date DEFAULT NULL, 
    `out_date` date DEFAULT NULL, 
    `in_mechine` varchar(3) DEFAULT NULL, 
    `out_mechine` varchar(3) DEFAULT NULL, 
    `upload_date` date DEFAULT NULL, 
PRIMARY KEY (`id`), 
KEY `id` (`id`), 
KEY `nik` (`nik`), 
KEY `in_date` (`in_date`), 
KEY `out_date` (`out_date`), 
KEY `in_hr` (`in_hr`), 
KEY `out_hr` (`out_hr`) 
) 

値の例である出席テーブルを有する:

iは、クエリ

SELECT * FROM `msattendance` WHERE (in_date between '2017-11-23' and '2017-11-28') and reg_b = '5657' 

が、レコードID番号13を使用

+----+-----------+-------+----------+----------+---------+----------+------------+------------+------------+-------------+---------------------+---------------------+-------------+ 
 
| id | regnum | reg_b | in_hr | out_hr | in_info | out_info | in_date | out_date | in_mechine | out_mechine |  upload_time  | upload_time2  | upload_date | 
 
+----+-----------+-------+----------+----------+---------+----------+------------+------------+------------+-------------+---------------------+---------------------+-------------+ 
 
| 1 | 216115657 | 5657 | 07:36:00 | 15:17:00 | 1  | 2  | 2017-02-18 | 2017-02-18 | 2   | 2   | 2017-03-16 08:09:15 | 2017-03-16 08:11:42 | 2017-03-16 | 
 
| 2 | 216115657 | 5657 | 00:00:00 | 18:59:00 | NULL | 2  | NULL  | 2017-02-17 | NULL  | 2   | NULL    | 2017-03-16 08:09:15 | 2017-03-16 | 
 
| 3 | 216115657 | 5657 | 00:00:00 | 07:41:00 | NULL | 2  | NULL  | 2017-05-25 | NULL  | 4   | NULL    | 2017-05-30 15:32:45 | 2017-05-30 | 
 
| 4 | 216115657 | 5657 | 07:41:00 | 16:38:00 | 1  | 2  | 2017-05-26 | 2017-05-26 | 2   | 2   | 2017-05-30 15:51:07 | 2017-05-30 16:01:39 | 2017-05-30 | 
 
| 5 | 216115657 | 5657 | 00:00:00 | 16:40:00 | NULL | 2  | NULL  | 2017-05-25 | NULL  | 4   | NULL    | 2017-05-30 15:51:07 | 2017-05-30 | 
 
| 10 | 216115657 | 5657 | 07:44:00 | 16:45:00 | 1  | 2  | 2017-11-22 | 2017-11-22 | 2   | 4   | 2017-11-23 10:01:38 | 2017-11-23 10:07:04 | 2017-11-23 | 
 
| 11 | 216115657 | 5657 | 07:43:00 | 16:41:00 | 1  | 2  | 2017-11-23 | 2017-11-23 | 2   | 3   | 2017-11-23 10:07:04 | 2017-11-24 13:13:27 | 2017-11-23 | 
 
| 12 | 216115657 | 5657 | 07:43:00 | 16:33:00 | 1  | 2  | 2017-11-24 | 2017-11-24 | 3   | 4   | 2017-11-24 13:13:27 | 2017-11-25 09:50:05 | 2017-11-24 | 
 
| 13 | 216115657 | 5657 | 00:00:00 | 14:13:00 | 1  | 2  | NULL  | 2017-11-25 | NULL  | 4   | 2017-11-25 09:50:05 | 2017-11-27 10:32:51 | 2017-11-25 | 
 
| 14 | 216115657 | 5657 | 07:43:00 | 16:32:00 | 1  | 2  | 2017-11-27 | 2017-11-27 | 3   | 4   | 2017-11-27 10:32:51 | 2017-11-28 14:00:27 | 2017-11-27 | 
 
| 15 | 216115657 | 5657 | 07:43:00 | 00:00:00 | 1  | NULL  | 2017-11-28 | NULL  | 4   | NULL  | 2017-11-28 14:00:27 | NULL    | 2017-11-28 | 
 
+----+-----------+-------+----------+----------+---------+----------+------------+------------+------------+-------------+---------------------+---------------------+-------------+

現れない

私はmrのSQLコードを使用します。ナイジェル・レン

SELECT * FROM `msattendance` 
WHERE ((in_date between '2017-11-23' and '2017-11-28') 
     or in_date is null) 
    and reg_b = '5657' 

が、別の日には、外部の私が11月22日の日から11月28日に、テーブルの内容を表示することができますどのように

+--------+-----------+-------+----------+----------+---------+----------+------------+------------+------------+-------------+---------------------+---------------------+-------------+ 
 
| id | regnum | reg_b | in_hr | out_hr | in_info | out_info | in_date | out_date | in_mechine | out_mechine |  upload_time  | upload_time2  | upload_date | 
 
+--------+-----------+-------+----------+----------+---------+----------+------------+------------+------------+-------------+---------------------+---------------------+-------------+ 
 
| 1493 | 216115657 | 5657 | 00:00:00 | 18:59:00 | NULL | 2  | NULL  | 2017-02-17 | NULL  | 2   | NULL    | 2017-03-16 08:09:15 | 2017-03-16 | 
 
| 100526 | 216115657 | 5657 | 00:00:00 | 07:41:00 | NULL | 2  | NULL  | 2017-05-25 | NULL  | 4   | NULL    | 2017-05-30 15:32:45 | 2017-05-30 | 
 
| 101727 | 216115657 | 5657 | 00:00:00 | 16:40:00 | NULL | 2  | NULL  | 2017-05-25 | NULL  | 4   | NULL    | 2017-05-30 15:51:07 | 2017-05-30 | 
 
| 297283 | 216115657 | 5657 | 00:00:00 | 14:13:00 | 1  | 2  | NULL  | 2017-11-25 | NULL  | 4   | 2017-11-25 09:50:05 | 2017-11-27 10:32:51 | 2017-11-25 | 
 
| 293486 | 216115657 | 5657 | 07:44:00 | 16:45:00 | 1  | 2  | 2017-11-22 | 2017-11-22 | 2   | 4   | 2017-11-23 10:01:38 | 2017-11-23 10:07:04 | 2017-11-23 | 
 
| 294748 | 216115657 | 5657 | 07:43:00 | 16:41:00 | 1  | 2  | 2017-11-23 | 2017-11-23 | 2   | 3   | 2017-11-23 10:07:04 | 2017-11-24 13:13:27 | 2017-11-23 | 
 
| 296015 | 216115657 | 5657 | 07:43:00 | 16:33:00 | 1  | 2  | 2017-11-24 | 2017-11-24 | 3   | 4   | 2017-11-24 13:13:27 | 2017-11-25 09:50:05 | 2017-11-24 | 
 
| 298601 | 216115657 | 5657 | 07:43:00 | 16:32:00 | 1  | 2  | 2017-11-27 | 2017-11-27 | 3   | 4   | 2017-11-27 10:32:51 | 2017-11-28 14:00:27 | 2017-11-27 | 
 
| 299841 | 216115657 | 5657 | 07:43:00 | 00:00:00 | 1  | NULL  | 2017-11-28 | NULL  | 4   | NULL  | 2017-11-28 14:00:27 | NULL    | 2017-11-28 | 
 
+--------+-----------+-------+----------+----------+---------+----------+------------+------------+------------+-------------+---------------------+---------------------+-------------+

に見えるレンジエントリの日付はnullですが、in_date検索の提供?

+3

だけでも、私は –

答えて

0

あなたは言う必要 - 日付は、これらの日付の間にある - またはnull ...

SELECT * FROM `msattendance` 
    WHERE ((in_date between '2017-11-23' and '2017-11-28') 
      or in_date is null) 
     and reg_b = '5657' 
+0

イムは、前の日からそのコードが、私の古いデータを試してみてくださいnull'なのであります質問を –

+0

あなたは(例を示すことができる必要があるだけではなくのみ日付範囲があなたに編集として追加表示されます追加 'またはin_dateのは –

+0

私はそれを追加し、私の質問を編集しました –

0

これは、何が必要です。

以下のクエリは、in_dateが存在しないか、指定された期間内のすべてのユーザーを返します。

SELECT * 
FROM `msattendance` 
WHERE (in_date IS NULL OR in_date >= '2017-11-23') 
AND in_date <= '2017-11-28'   
AND reg_b = '5657' 
関連する問題