1
A
答えて
1
これは私がこのSQLは、あなたのためにそれを行うだろうと思います...ちょうどSQLの問題です:
select r1.*
from registrations r1, registrations r2
where
r1.start_date < r2.start_date
and r1.end_date > r2.start_date
Railsでは、あなたがこのような行いたい:
SQLに等しいregistrations = Registration.find_by_sql(sql)
を上記のsqlコード。
2
あなたは重複として「感動」の日付を考える場合には、例えば、ここに<=
からhttp://c2.com/cgi/wiki?TestIfDateRangesOverlap
WHERE A.start < B.end
AND B.start < A.end
変更<
を説明するように、オーバーラップテストの正解は、二回This.Start
Other.End
対です
Jan1 - Jan13
Jan13 - Jan15
戻り<=
ため重ならなくオーバーラップ<
0
ためこれは、1つは完全に他のに含まれていない場合であっても、二つの範囲の間任意重なりを有している任意の範囲1を見出します。
select r1.*
from registrations r1
JOIN registrations r2 ON r1.start_date
between r2.start_date
AND r2.end_date
0
標準SQLにはOVERLAPS演算子があります。
CREATE TABLE over_laps
(
start_date date NOT NULL,
end_date date NOT NULL,
CONSTRAINT over_laps_pkey PRIMARY KEY (start_date, end_date),
CONSTRAINT over_laps_check CHECK (start_date < end_date)
)
insert into over_laps values
('2011-01-10', '2011-01-15'),
('2011-01-08', '2011-01-09'),
('2011-01-09', '2011-01-10'),
('2011-01-09', '2011-01-11'),
('2011-01-10', '2011-01-12'),
('2011-01-11', '2011-01-13'),
('2011-01-13', '2011-01-15'),
('2011-01-14', '2011-01-16'),
('2011-01-15', '2011-01-17'),
('2011-01-17', '2011-01-19');
select t1.start_date start_1, t1.end_date end_1,
t2.start_date start_2, t2.end_date end_2
from over_laps t1
inner join over_laps t2
on ((t1.start_date, t1.end_date) overlaps (t2.start_date, t2.end_date))
-- Exclude rows that overlap themselves, a trivial case in a self-joined table.
where t1.start_date <> t2.start_date and
t1.end_date <> t2.end_date
関連する問題
- 1. 重複する日付の検索と重複レコードの検索
- 2. 複数の日付間の最大日数をSQLで検索
- 3. SQL Serverの検索重複
- 4. SQLの重複日付
- 5. SQLの日付の重複
- 6. SQL Server - 重複する日付を含む日付の間のギャップの検出
- 7. 重複を検索するSQLクエリ
- 8. SQL Serverの重複する日付
- 9. 重複する日付のSQLトリガー
- 10. 階層SQLで重複/重複行を検索
- 11. SQLの日付に日付範囲を参加:返す重複
- 12. SQL:ライブラリデータベースの重複エントリの検索
- 13. SQL Server:重複レコードの検索
- 14. SQLクエリー - 重複フィールドの検索
- 15. 日付を検索する
- 16. xl内のSQL VBA日付検索クエリ
- 17. 重複を検索
- 18. Agressoで重複した請求書を検索するSQL
- 19. SQL Serverで利用可能な日付を検索する
- 20. Rubyハッシュで重複を検索する
- 21. 日付/時刻レコードの重複を検出し、SQLを使用して重複しているレコードを表示
- 22. 日付でデータを検索する - エラー
- 23. SQLで重複を検索していますか?
- 24. Java日付の検索日
- 25. 日付で弾性検索
- 26. 日付で検索クエリ
- 27. Excelの日付範囲で日付を検索する
- 28. 単一の日付フィールドで日付フォーマットを検索する
- 29. Oracle sqlが重複から1行を検索する
- 30. SQL - 日付範囲内の重複値をカウントする
これは、r2がr1に完全に含まれている場合にのみ表示されるように見えますが、問題は重複を見つけることだったと思います。 –