MySQL在具有IF条件的非唯一值上加入JOIN

时间:2015-10-04 20:45:49

标签: mysql if-statement join

我的参加者表格如下:

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

1 个答案:

答案 0 :(得分:1)

试试这个(也许您必须将表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;