在SQL查询中显示行或NULL
问题描述:
我试图从一个查询中的三个表中获取信息。我不知道是否有可能做到这一点......迄今为止我尝试过的方法没有奏效,但我也不是那么熟悉SQL。在SQL查询中显示行或NULL
我有三个表: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
此查询仅返回在其中additionalInfo.identifier
存在的价值,但正如我所说,这是不能保证存在。
答
使用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
为了进一步获得更多的知识有关加入,请访问以下链接:
答
除了用左联接
你也可以检查数据返回的结果集基地有
resultset.eof
我总是用这个来检查数据库返回的任何
的问题已经回答了,但可能我只想补充一点,“ASC”,通常并不需要为这是ANSI默认的排序行为。因此“ORDER BY registeration.lastName”就足够了。通常,您在多个字段上的多个方向进行订购时明确使用ASC。 – Trent 2013-02-28 17:14:31