Mysql 选择多行,条件为一行

Mysql 选择多行,条件为一行,mysql,sql,join,pivot-table,crosstab,Mysql,Sql,Join,Pivot Table,Crosstab,我正在尝试加入两个表,事件和事件日期,每个事件都有许多日期 事件表包含ID,name;事件日期-ID,event\u ID,date,place\u ID每天都是事件日期表中的一行。对于不同的日期,place\u id可以不同 我想展示这个月的活动列表——但只有那些今天的活动才有place_id=1 我应该为此编写什么sql查询? 谢谢 编辑 很抱歉,我错过了smth,结果和事件我必须显示每个事件的事件日期表 所以结果会是这样的 1) event id and name with its dat

我正在尝试加入两个表,事件和事件日期,每个事件都有许多日期

事件表包含
ID
name
;事件日期-
ID
event\u ID
date
place\u ID
每天都是
事件日期表中的一行。对于不同的日期,
place\u id
可以不同

我想展示这个月的活动列表——但只有那些今天的活动才有place_id=1

我应该为此编写什么sql查询? 谢谢

编辑

很抱歉,我错过了smth,结果和事件我必须显示每个事件的
事件日期表

所以结果会是这样的

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 else,并且仅为today 1,那么在这种情况下,我将仅具有event_dates表中仅包含todays行的事件,该怎么办

结果应如下所示

                Aug1        Aug2        Aug3 ....   Aug21(today)    . . .Aug30
eventName1      placeId     placeId     placeId      placeId            placeId
eventName2      placeId     placeId     placeId     placeId             placeId
eventName3      placeId     placeId     placeId     placeId             placeId
因此,我将显示本月的EVEN列表及其信息,但列出的所有事件今天的placeId应为1。

尝试以下方法:

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有更多的天数,您想将您的活动显示更多次吗?

尝试以下方法:

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;
查询:


到目前为止你试过什么?虽然我可以写一个查询来帮你解决这个问题,但我真的觉得你什么都没试过,因为我要写的查询是一个更基本的内部连接查询。@Simonatmso.net,抱歉,我没有提到最重要的条件,没有这个条件,它只是简单的连接,你是right@John例如我不明白。您已经写过:我想显示本月的活动列表,但只有今天的活动才有place_id=1。如果我是你的月份,你所有的地方都有1个不同,对我来说,你没有行。请根据需要添加一些示例。@JoeTaras,我更新了问题Left JOIN比Internal JOIN更昂贵(您模拟了一个Internal,因为在WHERE子句中您设置了从属表事件\ U日期的条件)
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;