【发布时间】:2013-08-21 10:16:11
【问题描述】:
我正在尝试加入 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 表中只有今天行的事件
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。
【问题讨论】:
-
到目前为止你尝试过什么?虽然我可以写出一个可以为你解决这个问题的查询,但你真的觉得你什么都没试过,因为我写的查询是更基本的 INNER JOIN 查询之一。
-
@Simonatmso.net,对不起,我错过了最重要的条件,没有它只是简单的加入,你是对的
-
@John:我不明白。你写过:我想显示这个月的事件列表 - 但只有那些,今天有 place_id = 1。如果我你的月份你所有的地方都相差 1,对我来说,你没有行.请根据需要添加一些样本。
-
@JoeTaras,我更新了问题
标签: mysql sql join pivot-table crosstab