在SQL查询中显示行或NULL

时间:2013-02-28 17:09:42

标签: mysql sql join

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

我有三个表:registration,其中包含注册信息experience,其中包含客户的事件选择(如果他们选择了晚餐,午餐,单日等),以及additionalInfo,其中包含其他活动信息,例如他们在活动期间为特定研讨会做出的选择。 registrationexperience将始终包含值,但不会保证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

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

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:0)

除了使用左连接

您还可以检查返回的数据库结果集是否具有

resultset.eof

我总是使用它来检查数据库是否返回了任何内容