我正在尝试加入2个表,事件和event_dates,每个事件都有很多日期
事件表包含ID
,name
; event_dates - ID
,event_id
,date
,place_id
每天都是event_dates
表格中的一行。对于不同的日期place_id
可能会有所不同。
我想显示本月事件的列表 - 但只有那些,今天的事件有place_id = 1.
我应该为此编写什么SQL查询? 感谢
修改
我道歉,我错过了smth,结果以及我必须为每个事件显示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表中只有今天行的事件
结果应如下
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。
答案 0 :(得分: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天,你想要多次展示你的活动吗?
答案 1 :(得分: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;
答案 2 :(得分: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;