我有一个与会者表,如下所示:
event_id user_id
1 16
1 12
1 13
2 14
2 16
2 12
3 11
3 16
以及有关表中事件的信息,如下所示:
event_id eventcenter_id date_begin date_end
1 2 2016-10-31 18:00:00 2016-10-31 21:00:00
2 1 2016-11-20 18:00:00 2016-11-20 18:40:00
3 2 2016-11-20 15:00:00 2016-11-20 18:00:00
最后是一个如下所示的表格:
eventcenter_id name
1 Fire Hall
2 Sunny Lake
我需要一个查询来返回用户正在参加的所有事件。结果应返回事件中心名称、date_begin 和 date_end,我可以在日历中使用这些对象。当我尝试加入参加者表中的 event_id 时,它给出的错误不是 event_id 上的唯一值。我追求的结果应该是这样的:
user_id eventCenter_name date_begin date_end
16 sunny lake 2016-10-31 18:00:00 2016-10-31 21:00:00
16 fire hall 2016-11-20 18:00:00 2016-11-20 18:40:00
16 sunny lake 2016-11-20 15:00:00 2016-11-20 18:00:00
最佳答案
尝试一下(也许您必须将表 eventcenter 的名称更改为您使用的名称):
SELECT aa.user_id, cc.eventCenter_name, bb.date_begin, bb.date_end
FROM attendees AS aa
INNER JOIN events AS bb
ON aa.event_id = bb.event_id
INNER JOIN eventcenter AS cc
ON bb.eventcenter_id = cc.eventcenter_id
ORDER BY aa.user_id ASC;
如果您需要特定用户,请使用以下查询:
SELECT aa.user_id, cc.eventCenter_name, bb.date_begin, bb.date_end
FROM attendees AS aa
INNER JOIN events AS bb
ON aa.event_id = bb.event_id
INNER JOIN eventcenter AS cc
ON bb.eventcenter_id = cc.eventcenter_id
WHERE aa.user_id = 16;
关于MySQL JOIN 使用 IF 条件对非唯一值进行连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32938223/