0

我正在开展一个项目,以帮助参加特定会议的与会者。我正在查询以获取会议中的事件以及指定的用户是否参加了此活动。为了跟踪用户是否参加活动,我们有一个连接表(Events_Users),所以我不确定如何完成我的任务。我需要能够选择事件的所有信息并将其返回,以及一个额外的列“isAttending”(数据库中不存在)指定该用户是否参加该会议。

我希望返回结果类似于:

| event.id | isAttending |
|     1    |      1      |
|     2    |      0      |
|     3    |      0      |

这可能吗?(userId 将被传入,因此我可以检查以确定 'isAttending' 是真还是假)。

附带说明一下,我们已经尝试进行两次单独的调用(getAllEvents 和 isUserAttending);然而,由于这些调用是异步的,我们很难获得我们想要的信息(我不知道细节)。

谢谢!

4

1 回答 1

0

假设你有这些表

Events : id , other columns
Event_Users : event_id , user_id
Users : id , username

这是我会给你想法的查询。如果 null 将值设置为 0,则使用 IFNULL 设置为 1。

SELECT
  e.id,
  IFNULL(u.username,0,1) as isAttending
from `Events` as e
  LEFT JOIN Events_Users as eu ON eu.events_id = e.id
  LEFT JOIN users as u ON u.id = eu.user_id
where u.id = 1

其中 1 是您可以动态替换的特定用户 ID

于 2013-02-07T18:51:34.113 回答