部屋の入り口にあるICカードチェッカーのログを利用してレポート作成を行う予定です。
DBはMysql5.1を利用しています。
mysql> select * from t1 ;
+------+---------------------+
| id | jikan | hito | inout |
+------+---------------------+
| 1 | 2011-07-20 12:50:01 |hiro|in|
| 2 | 2011-07-20 13:23:37 |misa|in|
| 3 | 2011-07-20 14:08:41 |hiro|out|
| 4 | 2011-07-20 15:27:02 |sasato|in|
| 5 | 2011-07-20 16:31:38 |misa|out|
| 6 | 2011-07-20 17:42:19 |hiro|in|
| 7 | 2011-07-20 18:19:09 |hiro|out|
| 8 | 2011-07-20 19:07:12 |misa|in|
+------+---------------------+
(jikanはdatetime形式)
レポート形式は下記を予定
|入室日時|退室日時|名前|
☆考え方
1.whereで「in」を指定して別テーブルB1を作成
2.whereで「out」を指定して別テーブルC1を作成
とここまで考えたのですがココから先がおもいつきません。
テーブルB1とC1のjikanを比較?
B1テーブルのhiroが12:50にinした時間を基準にC1テーブルの
hiroのout時間のtimediffが小さいものを探す・・・?
どなたか妙案がありましたらご教授いただきたく。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
データに重複が無いと仮定します。
考え方
(1)人単位に'in'のデータを抽出する。→A
(2)人単位に'out'のデータを抽出する。→B
(3)AからBを見て同じ人で、時刻が大きいものの中から
最も小さい時刻が退出時刻になる。
select A.jikan as nyuushitsu,min(B.jikan) as taishutsu,
A.hito from
(select jikan,hito from t1 where inout='in') A
left join
(select jikan,hito from t1 where inout='out') B
on A.hito=B.hito and A.jikan<B.jikan
group by A.jikan,A.hito
6行目の結合条件に着目して下さい。
不等号の結合条件というのを思いつかないと
解決しない問題です。サブクエリを使うことで、
B1とかC1は不要になります。
No.3
- 回答日時:
ちなみに#1さんの回答はサブクエリを使わず、こう書いた方が
インデックスが効きやすいかもしれません
select A.jikan as nyuushitsu,min(B.jikan) as taishutsu,A.hito
from t1 AS A
left join t1 AS B
on A.hito=B.hito
and B.inout='out'
and A.jikan<B.jikan
where A.inout='in'
group by A.jikan,A.hito
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL MYSQL エラー 2 2022/10/18 11:37
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- C言語・C++・C# [至急]Project Euler:#17Number letter countsコード入力出力解説 2 2022/09/24 02:46
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- Oracle SQL update方法 2 2022/06/22 14:07
- その他(プログラミング・Web制作) python 3.10で 同じlistに同じ構文で同じデータ代入した結果が異なる現象発生 7 2022/06/18 11:08
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- 英語 この英文の意味 6 2023/07/14 17:56
- 英語 The shape of the pyramid, however, has changed as 1 2022/04/27 20:59
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
テーブル名が可変の場合のクエ...
-
ACCESSのVBAにてExcelに行...
-
副問合せを使わずにUNIONと同様...
-
PRIMARY KEYのコピー
-
入退室時間の確認方法
-
SQLのテーブルにないデータの出力
-
同一テーブル内での比較(最新...
-
改行を含んだデータのインポート
-
Accessの構成をコピーしたい
-
ExcelのVLOOKUP関数の動作をMyS...
-
ExcelのMatch関数のようなもの...
-
テーブルデータの上書きをした...
-
指定した年に在籍していた社員...
-
ACCESS クエリーでソートの不具合
-
(SQL)日数の計算
-
データ無し時は空白行にしたい...
-
今って秋田新幹線へ動いてますか?
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
既存データをINSERT文にして出...
-
SQLで、Join句で結合したテ...
-
結合したテーブルをSUMしたい
-
テーブル名が可変の場合のクエ...
-
Accessの構成をコピーしたい
-
ACCESSのVBAにてExcelに行...
-
ExcelのMatch関数のようなもの...
-
ACCESS クエリーでソートの不具合
-
ExcelのVLOOKUP関数の動作をMyS...
-
データ無し時は空白行にしたい...
-
2つのテーブルをLIKE演算子のよ...
-
同一テーブル内での比較(最新...
-
ADO+ODBCでテーブルに接続する...
-
複数のテーブルからデータを取...
-
PRIMARY KEYのコピー
-
SQLです!!教えてください。あ...
-
改行を含んだデータのインポート
-
SQLです!!教えてください。あ...
-
Excelでしりとりを作る方法
おすすめ情報