0

カスタム カレンダー (Hijri Calendar) を使用してアプリにイベントを表示しています。ユーザーが詳細を入力し、カスタムカレンダーが出力を表示する単純なイベントデータベースがあります。

これはイベント フォームです。

Name
Description
Repetition (with options: Monthly, Yearly and Never)
Date (custom date)

フォームが送信され、データがデータベースに挿入されます。これはデータベース スキーマです。

id|e_name|e_desc|repeat|day|month|year

データベースに入力されているのはイスラム暦の日付なので、便宜上、日付を日|月|年に分割しました。

特定の日付にすべてのイベントを表示したい場合に問題が発生します。1 日の単純なイベントであれば、すべて正常に機能します。ただし、1 つの日付に繰り返し値が異なる複数のイベントがある場合、正しいデータは表示されません。

例: 1 つの日付に 2 つのイベント (ここでは簡単にするためにグレゴリオ暦を使用します):

29/5/2013 -1- Monthly event
29/5/2013 -2- Yearly event

これにより、2013 年 5 月 29 日の両方のイベントが表示されます。ただし、イベント 1 は毎月繰り返す必要があります。これはクエリです:

select * from user_events WHERE day = '29' AND month = '5'

これにより、繰り返し条件に関係なく、日付のすべてのイベントが表示されます。ただし、毎月のイベントを追加したい場合は29/4/2013. これを照会すると:

select * from user_events WHERE day = '29'

. .月ごとにイベントが表示されますが、年ごとのイベントも月ごとに表示されます。

month condition:AND month = '5'でクエリを実行すると、5 月の年次イベントと月次イベントのみが表示されますが、29/4 の月次イベントは表示されません。

つまり、5 月には 2 つの月次イベント (29/4 イベントと 29/5) と 1 つの年次イベント (29/5) が表示されます。

これを解決するにはどうすればよいですか?

4

1 に答える 1

2
select * from user_events where
  (day = ? and month = ? and repeat = 'year')
or
  (day = ? and repeat = 'month')
于 2013-05-29T00:20:45.477 に答える