我试图在一个查询中从三个表中获取信息。我不知道是否可以这样做...到目前为止我尝试过的东西没有用,但我对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
此查询仅返回additionalInfo.identifier
存在的值,但正如我所说,这不保证存在。
答案 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
我总是使用它来检查数据库是否返回了任何内容