1

events と event_dates の 2 つのテーブルに参加しようとしています。各イベントには多くの日付があります。

イベント テーブルには , が含まれIDますname。event_dates - IDevent_iddateplace_id毎日がevent_dates表の 1 行です。異なる日のためplace_idに異なる場合があります。

今月のイベントのリストを表示したいのですが、今日のものだけが place_id = 1 です。

そのためにどのようなSQLクエリを書くべきですか? ありがとう

編集

event_dates申し訳ありませんが、各イベントの表を表示する必要があるイベントとともに結果を見逃してしまいました。

結果は次のようになります

1) event id and name with its dates for this month (and for today place_id = 1)
2) other event id and name  with its dates for this month (and for today place_id = 1)
etc

SELECT e.*, d.date
FROM events e
JOIN event_dates d
ON e.id = d.event_id
WHERE d.date BETWEEN {d '2013-08-01'} and {d '2013-08-31'}
AND d.place_id = 1

このクエリは機能しません。なぜなら、すべての月で place_id が 2、3、またはそれ以外の場合で、今日のみ 1 の場合、event_dates テーブルの今日の行のみを含むイベントのみが発生するためです。

RESULT は次のようになります。

                Aug1        Aug2        Aug3 ....   Aug21(today)    . . .Aug30
eventName1      placeId     placeId     placeId      placeId            placeId
eventName2      placeId     placeId     placeId     placeId             placeId
eventName3      placeId     placeId     placeId     placeId             placeId

そのため、今月の情報を含むイベントのリストを表示していますが、リストされているすべてのイベントには、今日の placeId = 1 が必要です。

4

3 に答える 3

0

クエリ:

SELECT events.id, events.name,event_dates.date,event_dates.place_id
FROM events
INNER JOIN event_dates
ON events.id=event_dates.event_id
WHERE event_dates.date = sysdate and event_dates.place_id=1;
于 2013-08-21T10:32:44.073 に答える
0

これを試して:

SELECT e.*, d.date
FROM events e
JOIN event_dates d
ON e.id = d.event_id
WHERE d.date BETWEEN {d '2013-08-01'} and {d '2013-08-31'}
AND d.place_id = 1

しかし、私には疑問があります。place_id = 1 の日数が多い場合、イベントをもっと表示したいですか?

于 2013-08-21T10:23:00.690 に答える
0

次のようなことを試してください:

SELECT *.events from events 
left join event_date 
on id.events = event_dates.event_id 
where event_dates.dates between '01/08/2013' AND '31/08/2013' 
AND event_dates.place_id = 1;
于 2013-08-21T10:26:15.087 に答える