
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について教えて...
-
エクセルで最後の文字だけ置き...
-
SQLにて特定の文字を除いた検索...
-
エラー 1068 (42000): 複数の主...
-
VIEWの元のテーブルのindexって...
-
マイクラPC版のコマンドで効率...
-
select文のwhere句に配列を入れ...
-
Unionした最後にGROUP BYを追加...
-
Updateの複数テーブル条件時のL...
-
sqlで、600行あるテーブルを100...
-
Access パラメータクエリをcsv...
-
Webページを紹介するときに、ペ...
-
Firefox2.0+border-collapse: c...
-
URL と行番号の指定
-
イベント日付(複数または連続...
-
load dataするときに、最後の列...
-
MySQLのint型で001と表示する方...
-
バインド変数について
-
「SELECTして取得できない場合...
-
神戸 三宮でのおいしい夕食は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
select文のwhere句に配列を入れ...
-
SQL Left Join で重複を排除す...
-
Access パラメータクエリをcsv...
-
マイクラPC版のコマンドで効率...
-
【Transact-sql】 execの結果を...
-
sqlで、600行あるテーブルを100...
-
SQLにて特定の文字を除いた検索...
-
1テーブル&複数レコードの更新...
-
PL/SQLの変数について
-
WordpressのContact form 7でzi...
-
複数テーブルのGROUP BY の使い...
-
バインド変数について
-
inner joinをすると数がおかし...
-
MySQLのint型で001と表示する方...
-
updateを1行ずつ実行したい。
おすすめ情報