2016-06-17 5 views
0

はテーブルから、すべてのイベントを選択することで、このような時と場所と出力、それらを:選択イベント、私が何をしたいのか

Event ID Event ID in conflict 
1   2 
1   3 
1   4 
5   6 

ので、イベント2 startTimeがイベント1 startTimeとendTimeの間にある場合は、リストに表示されます。

私は、テーブル内のこれらの情報を持っている:

  • イベントID(ID)
  • イベント名(名前)
  • 開始日(たstartDate)
  • 終了日(endDateに)
  • 開始時間(startTimeの)
  • 終了時間(endTimeは)
  • イベント場所ID(locationID)

1 SELECTでこれを行う方法上の任意の提案?前もって感謝します。

+2

既に行っていることを表示できますか? –

+0

質問を改善するためのヒントについては、[こちら](http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/)をお読みください。 – HABO

答えて

3

ジョインを使用してイベントのペアを取得することができます。重複を取得するには:

select e.eventid, e2.eventid 
from events e join 
    events e2 
    on e.starttime < e2.endtime and 
     e.endtime > e2.starttime and 
     e.eventid < e2.eventid; 

実際には、特定の質問は重複に関するものではありません。だから、あなたの特定の質問のために:

select e.eventid, e2.eventid 
from events e join 
    events e2 
    on e2.starttime between e.starttime and e.endtimee; 

しかし、私はより一般的なオーバーラップロジックは、あなたのニーズに適したかもしれ疑います。

関連する問題