ホームページ > データベース > mysql チュートリアル > MySQL JOIN クエリでゼロカウントを表示するにはどうすればよいですか?

MySQL JOIN クエリでゼロカウントを表示するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-02 16:11:12
オリジナル
892 人が閲覧しました

How to Display Zero Counts in MySQL JOIN Queries?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート