1

以下のような dtr という名前のテーブルを取得しました。BETWEEN クエリの使用に問題があります。お気に入り:

$between = mysql_query("Select * from dtr where State Between 'Check In' And 'Check Out'");

私がやりたいことは、チェックインとチェックアウトの BETWEEN 内の STATE Out と Out Back を含む行も取得することです。しかし、うまくいかないようです。他に何を使えばいいですか?またはしますか?チェックインとチェックアウトの結果が得られるからです。

   Name      | AC-No.|    Date   |    Time      |    State   | Exception| Operation
-------------+-------+-----------+--------------+------------+----------+----------
Johnny Starks| 1220  | 5/13/2013 | 11:45:18 PM  |  Check In  |   OK     |
Johnny Starks| 1220  | 5/14/2013 | 12:46:58 AM  |  Out       |   Out    |
Johnny Starks| 1220  | 5/14/2013 | 12:52:41 AM  |  Out Back  |   Out    |
Johnny Starks| 1220  | 5/14/2013 | 02:12:50 AM  |  Out       |   Out    |
Johnny Starks| 1220  | 5/14/2013 | 02:43:11 AM  |  Out Back  |   Out    |
Johnny Starks| 1220  | 5/14/2013 | 05:46:58 AM  |  Out       |   Out    |
Johnny Starks| 1220  | 5/14/2013 | 06:22:41 AM  |  Out Back  |   Out    |
Johnny Starks| 1220  | 5/14/2013 | 16:55:12 AM  |  Check Out |   OK     |
4

2 に答える 2

2

クエリを使用するIN

Select * from dtr 
where State IN('Check In','Check Out','Out','Out Back')

BETWEEN主にdatenumericデータで使用されます。

于 2013-06-17T04:40:23.777 に答える
2

次の場合にのみ、範囲に対して文字列比較を使用できます。

'Check In' < 'Out' < 'Out Back' < 'Check Out'

したがって、IN演算子を使用し、グループ化を使用して、各状態の個々の発生回数をカウントする必要があります。

SELECT `State`, COUNT(*)
FROM dtr 
WHERE State IN ('Check In', 'Out', 'Out Back', 'Check Out')
GROUP BY `State`;

結果:

Check In  | 1
Out       | 3
Out Back  | 3
Check Out | 1
于 2013-06-17T06:05:16.150 に答える