在SQL查询中显示行或NULL

jos*_*osh 0 mysql sql join

我试图在一个查询中从三个表中获取信息.我不知道是否可以这样做...到目前为止我尝试过的东西没有用,但我对SQL也不是很了解.

我有三张桌子registration,其中包含注册信息,experience用于保存客户的活动选择(如果他们选择了晚餐,午餐,单日等),并且additionalInfo还包含其他活动信息,例如他们对特定研讨会的选择在活动期间.registration并且experience将始终具有值,但additionalInfo不保证具有值.我想要的是,在一个查询中,获取注册和事件选择,以及是否有东西additionalInfo要检索或返回NULL.

我正在尝试这个查询:

SELECT registration.firstName, registration.lastName, registration.phone, experience.options, additionalInfo.workshops
FROM registration, experience, additionalInfo
WHERE registration.identifier = experience.identifier
AND experience.paid = 'Yes'
AND registration.eventName = 'march2013'
AND additionalInfo.identifier = registration.identifier
ORDER BY registration.lastName ASC
Run Code Online (Sandbox Code Playgroud)

此查询仅返回additionalInfo.identifier存在的值,但正如我所说,这不保证存在.

Joh*_*Woo 5

使用 LEFT JOIN

SELECT  registration.firstName, 
        registration.lastName, 
        registration.phone, 
        experience.options, 
        additionalInfo.workshops
FROM    registration
        INNER JOIN experience
            ON registration.identifier = experience.identifier
        LEFT JOIN additionalInfo
            ON additionalInfo.identifier = registration.identifier
WHERE   experience.paid = 'Yes' AND 
        registration.eventName = 'march2013'
ORDER   BY registration.lastName ASC
Run Code Online (Sandbox Code Playgroud)

要进一步了解联接,请访问以下链接: