0

したがって、PassportNumber = 'C_AA8' と言及されたケースの合計を取得する簡単なクエリを作成しました。ただし、RegistrationCase に存在しない PassportNumber のクエリを設定すると、0 が返されます (JOIN できないことがわかっているため)。どうすれば修正できますか?そして、このクエリを GROUP BY で動作するように作り直す方法はありますか? ご不明な点がございましたら、お気軽にお問い合わせください。PHPmyadmin と AMPPS で MySQL を使用しています。固定レジスター。

SELECT COUNT( unRegisterCase.PassportNumber ) + COUNT( RegistrationCase.PassportNumber ) + COUNT( RecoveringCase.NewPassportNumber ) AS result
FROM RegistrationCase
LEFT JOIN unRegisterCase ON unRegisterCase.PassportNumber = RegistrationCase.Passportnumber
LEFT JOIN RecoveringCase ON RecoveringCase.NewPassportNumber = RegistrationCase.Passportnumber
WHERE RegistrationCase.PassportNumber =  'C_AA8'
4

2 に答える 2

1

ではない?

SELECT COUNT(PassportNumber ) as PassportCount FROM
(
SELECT PassportNumber FROM RegistrationCase UNION ALL
SELECT NewPassportNumber FROM RecoveringCase UNION ALL
SELECT PassportNumber FROM unRegisterCaseber
) A
WHERE PassportNumber =  'C_AA8'
于 2012-12-27T17:32:55.517 に答える
0

SQlの下部にあるwhere句を使用すると、左側の結合がキャンセルされます。

これを試してみてください

 SELECT COUNT( UnregisterCase.PassportNumber ) + 
        COUNT( RegistrationCase.PassportNumber ) + 
        COUNT( RecoveringCase.NewPassportNumber ) AS result
 FROM RegistrationCase, unRegisterCase, RecoveringCase
 WHERE UnregisterCase.PassportNumber = RegistrationCase.Passportnumber
 AND RecoveringCase.NewPassportNumber = RegistrationCase.Passportnumber
 AND RegistrationCase.PassportNumber =  'C_AA8'

unRegisterとUnregisterのスペルが異なるため、大文字と小文字の区別も確認してください

于 2012-12-27T17:27:37.507 に答える