0

1 つのクエリで 3 つのテーブルから情報を取得しようとしています。これが可能かどうかはわかりません...これまでに試したことはうまくいきませんでしたが、SQLの知識もありません。

3 つのテーブルがあります:registrationは登録情報experienceを保持し、 は顧客のイベント選択 (ディナー、ランチ、1 日などを選択した場合)additionalInfoを保持し、 は特定のワークショップの選択などの追加のイベント情報を保持します。イベント中。常に値を持ちますが、値registrationを持つことは保証されません。私が取得したいのは、単一のクエリで、登録とイベントの選択を取得し、それを取得するものがある場合は.experienceadditionalInfoadditionalInfoNULL

私はこのクエリを試しています:

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 に答える