MySQL カウント クエリでゼロ カウントを表示する
データベース管理の領域では、集計情報を取得するためにカウント操作がよく使用されます。ただし、JOIN クエリを使用する場合、特に欠損値または Null 値がある場合、ゼロのカウントを表示するのは困難な場合があります。この問題は、テーブル内のすべての行の値をカウントしようとしたときに、結合されたテーブル内に一致するエントリがない行がある場合に発生します。
問題: ゼロ カウントが欠落している
次のシナリオを考えてみましょう。Employee と mailingSubscriptions という 2 つのテーブルがあります。 mailingSubscriptions テーブルには従業員のサブスクリプション情報が含まれており、各従業員は一意の EmployeeName を持ちます。サブスクリプションを持たない (つまり、カウントがゼロの) 従業員も含めて、各従業員に関連付けられたサブスクリプションの数を確認したいと考えています。
次のクエリを使用します:
Select COUNT(c.Name) From Employee INNER JOIN mailingSubscriptions as m ON c.Name = m.EmployeeName;
のみを取得します。 mailingSubscriptions テーブルに少なくとも 1 つのエントリを持つ従業員をカウントします。サブスクリプションを持たない従業員は結果から除外されます。
解決策: JOIN と GROUP BY を左にします
この問題を解決し、すべての従業員の数を取得するには、次のようにします。 LEFT JOIN と GROUP BY 句。 LEFT JOIN を使用すると、mailingSubscriptions テーブルに一致する行がない場合でも、Employee テーブルのすべての行が結果に含まれるようになります。次に、GROUP BY 句によって結果が従業員名ごとにグループ化され、各従業員のサブスクリプション数をカウントできるようになります。
SELECT c.name, count(m.mailid) FROM Employee LEFT JOIN mailingSubscriptions as m ON c.Name = m.EmployeeName GROUP BY c.name;
この変更されたクエリを使用することで、次のようなすべての従業員のサブスクリプション数を取得できるようになります。サブスクリプションがゼロの人。これにより、従業員のサブスクリプション ステータスに関係なく、従業員のサブスクリプション データを完全に把握できるようになります。
以上がMySQL JOIN クエリでゼロカウントを表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。