MS Access Tips/Sample and VBA and Blog customize etc...

クエリで時間帯重複チェック

社員の作業時間帯の管理テーブルです。(ID は主キー)

Tbl1
ID日付社員ID開始時刻終了時刻
12012/02/01117:00:0019:00:00
22012/02/01118:00:0020:00:00
32012/02/01115:00:0016:00:00
42012/02/01217:30:0018:30:00
52012/02/02117:00:0019:00:00

ID 1 と 2 は、同じ社員が同じ日に、作業時間帯が重複しています。こういうことはありえないので、入力間違いということになります。このような重複データを抽出したいという要件です。

他にも、会議室の使用予約管理、とか、同様の抽出をしたい場面はいろいろありそうです。

これをクエリ(SQL)で抽出する方法を紹介します。

難易度:

期間重複の検索条件については、下記を参照。

クエリでの期間の抽出条件 - hatena chips

今回は、抽出条件値をパラメータで指定するのではなく自身のテーブル内で重複がないかチェックすると言うことと、同じ社員、同じ日という別条件が加わっている点が上記のリンク先とは異なっています。

クエリの新規作成で、Tbl1 を2回追加して(2回目に追加したものは Tbl1_1 と別名になります)、下図のように設定します。

期間重複チェッククエリ

SQLだと下記になります。

SQLサブクエリを使う方法もあります。

実際に検証した訳ではないですが、相関サブクエリになりますので、たぶんこちらの方が重いと思います。

補足:既に入力済みのデータから重複するものを抽出場合は上記のクエリでいいのですが、実運用のアプリに組み入れるなら、入力フォームの更新前処理で重複があるかどうかチェックして、重複するデータの入力を許さないようにする設計仕様にした方がいいと思います。


拍手する

Leave a reply






該当の記事は見つかりませんでした。