我正在开展一个项目,以协助参加特定会议的与会者。我正在进行查询以获取会议中的事件以及指定的用户是否参加此活动。为了跟踪用户是否参加活动,我们有一个联接表(Events_Users),因此我不确定如何完成我的任务。我需要能够选择事件的所有信息并返回它,以及一个额外的列" isAttending" (数据库中不存在)指定该用户是否参加该会议。
我希望返回的结果如下:
| event.id | isAttending |
| 1 | 1 |
| 2 | 0 |
| 3 | 0 |
这可能吗? (userId将被传入,因此我可以检查它以确定“是否是正确或错误”。
作为旁注,我们已经尝试过两次单独的调用(getAllEvents和isUserAttending);但是,因为这些调用是异步的,所以我们无法获得我们想要的信息(我不知道细节)。
谢谢!
答案 0 :(得分:0)
假设你有这些表
Events : id , other columns
Event_Users : event_id , user_id
Users : id , username
这是一个可以为您提供想法的查询。如果为null,则使用IFNULL将设置值设置为0,否则为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是您可以动态替换的SPECIFIC用户ID