0

我试图在一个查询中从三个表中获取信息。我不知道是否有可能做到这一点......到目前为止我尝试过的方法没有奏效,但我对 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存在的值,但正如我所说,这不能保证存在。

4

2 回答 2

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

要进一步了解有关联接的更多信息,请访问以下链接:

于 2013-02-28T17:11:44.240 回答
0

除了使用左连接

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

结果集.eof

我总是用它来检查数据库是否返回任何东西

于 2013-02-28T17:20:11.890 回答