选择多行,条件为一行mysql

时间:2013-08-21 10:16:12

标签: mysql sql join pivot-table crosstab

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

事件表包含IDname; event_dates - IDevent_iddateplace_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。

3 个答案:

答案 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;