您好我有2张桌子:
事件(idEvent,eventName)
和
注册(idRegistration,idEvent,idPerson)
人们注册活动,我存储他们的idPerson。现在让我们说,我们有2个事件(event1和event2)。我是id = 1的人,如果我已注册,我想看到所有会说我的事件和专栏。
我的意思是输出:
idEvent eventName IamRegistered
1 event1 yes
2 event2 no
如何从这两个表中编写查询以查看类似的输出?
PS:我知道SQL语法,但无法弄明白,左边连接的东西可能
答案 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个人未被注册的事件。