开发者

MySQL: LEFT JOIN

Hello I have 2 tables:

Events (idEvent, eventName)

and

Registrations(idRegistration, idEvent, idPerson)

People register to events and I store their idPerson. Now let's say, we have 2 events开发者_如何学运维 (event1 and event2). I am person with id = 1 and I want to see all events and columns that will say me, if I am registered.

I mean output like :

idEvent  eventName  IamRegistered
1        event1     yes
2        event2     no

How can I write a query from these two tables to see similiar output?

PS: I know SQL syntax but can't figure it out, something with left join probably


You're correct, it is a left join. The CASE expression outputs Yes or No depending upon if a matching record was found.

SELECT e.idEvent, e.EventName, (CASE r.idEvent WHEN NOT NULL THEN 'Yes' ELSE 'No' END) AS IsRegistered FROM Events e
  LEFT JOIN Registrations r ON r.idEvent=e.idEvent AND r.idPerson=1

It's important to have the idPerson=1 check in the JOIN clause rather than the Where clause, otherwise events that person 1 is not registred for will not be displayed.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜