
EVENT
--+------------+------------+
id | start_date | end_date
--+------------+------------+
0 | 2007-06-01 | 2007-06-03 |
--+------------+------------+
1 | 2007-06-04 | 2007-04-06 |
--+------------+------------+
2 | 2007-06-02 | 2007-06-05 |
↑こんな感じでイベントを管理するテーブルがあります。
イベントの開催期間の重複を出力するSQL文を書きたいのですが、
何かいい案はありませんでしょうか???
結果的には重複し合っているレコードのidを出力させたいです。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
#3で提示したような結果でいいなら、下記SQLで実現できると思います。
select x.id,y.id as 重複id
from t1 as x,t1 as y
where
(x.sdate between y.sdate and y.edate
or x.edate between y.sdate and y.edate)
and x.id<>y.id
order by x.id,y.id;
No.5
- 回答日時:
提示したSQLに、条件の漏れがありました。
イベント開催期間が、完全に他のイベントに含まれている場合の条件が抜けていまし
た。
id 開始日 終了日
1 6/5 6/10
2 6/10 6/15
3 6/15 6/20
4 1/1 12/31
上記の場合、イベント4を含んで検索できていませんでした。
カッコ内の条件に、以下を追加する必要があります。
「or x.sdate<y.sdate and x.edate>y.edate」
<訂正結果を反映したSQL>
select x.id,y.id as 重複id
from t1 as x,t1 as y
where
(x.sdate between y.sdate and y.edate
or x.edate between y.sdate and y.edate
or x.sdate<y.sdate and x.edate>y.edate)
and x.id<>y.id
order by x.id,y.id;
No.3
- 回答日時:
id 開始日 終了日
1 6/5 6/10
2 6/10 6/15
3 6/15 6/20
といったケースの場合、
id 重複id
1 2
2 1
2 3
3 2
のように結果を得ることはできるかも知れません。
どうしたいですか?
No.2
- 回答日時:
命題が曖昧ですね。
id 開始日 終了日
1 6/5 6/10
2 6/10 6/15
3 6/15 6/20
id=1とid=2は、期間に重複があります。
id=2とid=3は、期間の重複があります。
id=1とid=3には、期間の重複がありません。
上記のようなケースでは、得たい結果はどうなりますか?
idを条件指定し、「そのidと期間が重なるイベントを検索する」といった検索にする必要があると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
教えて!gooグレードポイントがdポイントに変わります!
dアカウント連携を行っていただくと、グレードに応じて「dポイント」が進呈されるようになります。
-
時間範囲が重複したレコードを返すSQL
その他(データベース)
-
2つの期間の重複する日数(月数)を計算するには?
Word(ワード)
-
期間重複チェックがわかりません
Visual Basic(VBA)
-
4
複数時間情報の重複を求める
Visual Basic(VBA)
-
5
<SQL>重複しているデータの場合は最新の日時のものを取得したい
SQL Server
-
6
従事期間の重複チェック、表示
Excel(エクセル)
-
7
Oracle 2つのDate型の値の差を「分」で取得したい
その他(データベース)
-
8
TO_CHARでのゼロ非表示について
Oracle
-
9
Viewにインデックスは張れますか?
Oracle
-
10
MAX関数を使ってからLEFT JOINしたいのですが・・
PHP
-
11
SELECT 文 GROUP での1件目を取得
SQL Server
-
12
COPYコマンドで結合すると余計な改行コードができる
その他(プログラミング・Web制作)
-
13
[Access]時間帯の重複チェック
その他(Microsoft Office)
-
14
アクセスのエラー「クエリには出力フィールドが1つ以上必要です。」
その他(Microsoft Office)
-
15
Oracleで「文字が無効です」のエラーが出ます
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
複数JOINしているとCOUNTが正し...
-
5
insertを高速化させたい
-
6
複数テーブルのGROUP BY の使い...
-
7
SQL文のエラー
-
8
WHERE id = ? について
-
9
テーブルが5つの時の結合の仕...
-
10
別テーブルからSELECTした値を...
-
11
一つ前のレコードの値と減算し...
-
12
テーブル名を省略して「h.id」...
-
13
SQL Left Join で重複を排除す...
-
14
Data too long for column 'id'...
-
15
エクセルで最後の文字だけ置き...
-
16
マイクラPC版のコマンドで効率...
-
17
1テーブル&複数レコードの更新...
-
18
selectした大量データをinsert...
-
19
AUTO_INCREMENT を複数のテーブ...
-
20
MySQLでグループ内での最大値の...
おすすめ情報
公式facebook
公式twitter