1

我正在尝试加入 2 个表、事件和 event_dates,每个事件都有很多日期

事件表包含ID, name; event_dates - ID, event_id, date,place_id每天是event_dates表中的一行。对于不同的日子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 或其他 smth,并且只有今天 1 在这种情况下,我将只有 event_dates 表中只有今天行的事件

结果应该如下

                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 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 回答
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 回答