ホームページ >データベース >mysql チュートリアル >MySQL で外部結合を使用して従業員のゼロ値を含むサブスクリプションをカウントするにはどうすればよいですか?

MySQL で外部結合を使用して従業員のゼロ値を含むサブスクリプションをカウントするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-01 09:22:14644ブラウズ

How Can I Count Subscriptions Including Zero Values for Employees in MySQL Using Outer Joins?

OUTER JOINS を使用した MySQL での Null カウントの処理

リレーショナル データベースを使用する場合、複数のクエリを実行するときにゼロ値を表示するのが難しい場合があります。テーブル。たとえば、質問で説明されているシナリオを考えてみましょう。ここには、Employee と mailingSubscriptions という 2 つのテーブルがあります。 Employee テーブルには従業員に関する基本情報が含まれ、mailingSubscriptions テーブルには従業員の電子メール購読ステータスが追跡されます。

各従業員の購読数をカウントするには、次のクエリを使用します。

SELECT COUNT(c.Name)
FROM Employee 
    INNER JOIN mailingSubscriptions as m ON c.Name = m.EmployeeName;

ただし、このクエリは、mailingSubscriptions テーブルに少なくとも 1 つのエントリを持つ従業員の数のみを返します。従業員がまだメールを購読していない場合、その数は結果から省略されます。

購読していない従業員の値をゼロに含めるには、外部結合を使用する必要があります。外部結合を使用すると、一致する値がない場合でも 2 つのテーブルの行を結合できます。この場合、左外部結合を使用します。これにより、mailingSubscriptions テーブルに対応する行があるかどうかに関係なく、Employee テーブルのすべての行が保持されます。

次のクエリは、各従業員のサブスクリプション数を計算するための左外部結合 (サブスクリプションのない従業員も含む):

SELECT c.name, count(m.mailid)
FROM Employee 
   LEFT JOIN mailingSubscriptions as m ON c.Name = m.EmployeeName
GROUP BY c.name;

GROUP BY c.name 句各従業員のサブスクリプションを個別にカウントするようにします。クエリの結果は、従業員名とそれに対応する購読数のリストになります。電子メールをまだ購読していない従業員には値が 0 として表示されます。

以上がMySQL で外部結合を使用して従業員のゼロ値を含むサブスクリプションをカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。