MySQL:LEFT JOIN

时间:2010-07-23 11:55:49

标签: mysql

您好我有2张桌子:

事件(idEvent,eventName)

注册(idRegistration,idEvent,idPerson)

人们注册活动,我存储他们的idPerson。现在让我们说,我们有2个事件(event1和event2)。我是id = 1的人,如果我已注册,我想看到所有会说我的事件和专栏。

我的意思是输出:

idEvent  eventName  IamRegistered
1        event1     yes
2        event2     no

如何从这两个表中编写查询以查看类似的输出?

PS:我知道SQL语法,但无法弄明白,左边连接的东西可能

1 个答案:

答案 0 :(得分:4)

你是对的,这是一个左连接。 CASE表达式输出Yes或No,具体取决于是否找到匹配的记录。

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

在JOIN子句而不是Where子句中检查idPerson = 1是很重要的,否则不会显示第1个人未被注册的事件。