如果用户参加活动,如何正确加入3个表以获得结果

时间:2014-08-12 15:35:00

标签: mysql

所以我有三张桌子;用户,事​​件和user_events。

用户表存储有关用户的所有信息,事件表将存储所有用户可以查看的所有事件以及用户ID的外键行,以便应用程序可以知道谁创建了该特定事件。最后一个表user_events存储event_id和user_id。我需要将这三个表连接在一起,以便我可以在特定用户参与该特定事件时获得结果。

到目前为止,我已经尝试过这个查询而没有任何运气:

SELECT events.*, user_events.user_id AS attending FROM events
LEFT JOIN users ON users.user_id = events.creatoruserid 
LEFT JOIN user_events ON user_events.user_id = users.user_id;

这个概念是我需要在我的应用程序中进行检查,并检查用户是否参加该特定事件,如果是,他/她可以删除出勤,反之亦然。

1 个答案:

答案 0 :(得分:1)

当您尝试抓住与会者时,看起来事件创建者正在混入查询中。您似乎也不需要加入users表,因为没有使用任何字段。

SELECT events.*, user_events.user_id AS attending FROM events
LEFT JOIN user_events ON user_events.event_id = events.event_id;

编辑: 如果您只想要单个用户的事件

SELECT events.*, user_events.user_id AS attending FROM events
LEFT JOIN user_events ON user_events.event_id = events.event_id
WHERE user_events.user_id = ?1;
AND events.event_id = ?2;

其中?1是您要检查的用户的ID,?2是您希望用户参加的事件的ID