2015-10-04 54 views
0

我有一个与会者表看起来是这样的:在一个表中MySQL的非唯一值JOIN与IF条件

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

试试这个(也许你有表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; 
+0

第二个答案让我在那里,谢谢:) –

+1

不错!不要忘记绿色的勾号来接受答案。 –