0

我使用下面的查询来检索有关聚会(活动)的信息,现在我需要知道查看它的用户是否参与其中。

SELECT
 meetups.id,
 meetups.meetup_name,
 meetups.url_meetup,
 meetups.meetup_text,
 meetups.date,
 meetups.time,
 users.username,
 TIMESTAMPDIFF(YEAR,users.birthdate,CURDATE()) AS age,
 c1.city_name as meetup_city,
 c2.city_name as user_city   
FROM
 meetups  
 LEFT JOIN users ON
  meetups.author_id=users.id
 LEFT JOIN cities c1 ON
  c1.postalcode = meetups.postalcode
 LEFT JOIN cities c2 ON
  c2.postalcode = users.postalcode
WHERE
 meetups.url_meetup = ?

我有一个名为 meetup_participants 的表,用于存储参与不同聚会的用户。

这张表的结构很简单:

meetup_id, user_id

在两个列上具有唯一索引。

所以我需要以某种方式加入meetups.id = meetup_participants.id 上的表格,并且user_id 必须等于存储在会话中的那个。

我只想得到结果,如果用户参与,则为 1,如果他不参与,则为 0。

我如何在 select 语句中执行此操作(最好没有子查询)?

4

1 回答 1

0

对您的 meetup_participants 表进行左连接。

left join meetup_participants mp where mp.something = meetups.something
and mp.user_id = the one you want.

在您的 select 子句中使用 case 构造。

case when mp.user_id is not null then 1 else 0 end IsParticipant
于 2013-04-30T02:21:28.770 回答