ホームページ >データベース >mysql チュートリアル >関連テーブルの MySQL COUNT クエリにゼロカウントを含める方法は?

関連テーブルの MySQL COUNT クエリにゼロカウントを含める方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-29 16:41:14728ブラウズ

How to Include Zero Counts in MySQL COUNT Queries for Related Tables?

MySQL COUNT クエリで 0 カウントが欠落している問題への対処

各顧客のサブスクリプション数を計算しようとする場合、一般的に次のことが行われます。クエリが関連テーブルにエントリを持つ顧客の数のみを返すという問題が発生します。これに対処し、サブスクリプションがゼロの顧客を含めるには、別のアプローチが必要です。

次のシナリオを考えてみましょう。Employee と mailingSubscriptions という 2 つのテーブルがあります。 Employee テーブルには従業員に関する情報が含まれ、mailingSubscriptions テーブルには従業員のサブスクリプションに関する詳細が保存されます。

各従業員のサブスクリプション数を取得するには、次のような単純なクエリになります。

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

ただし, このクエリは、少なくとも 1 つのサブスクリプションを持つ従業員の結果のみを返します。サブスクリプションのない従業員を含めて 0 カウントを表示するために、MySQL は別の解決策を提供します。それは、左結合です。

SELECT c.Name, COUNT(m.MailId)
FROM Employee c
LEFT JOIN mailingSubscriptions AS m ON c.Name = m.EmployeeName
GROUP BY c.Name;

この改訂されたクエリでは、左結合を使用して、Employee テーブルと mailingSubscriptions テーブルを接続します。 LEFT JOIN 演算子は、mailingSubscriptions テーブルに一致する行がない場合でも、Employee テーブルのすべての行が結果に含まれるようにします。

COUNT(m.MailId) は、それぞれのサブスクリプションの数を返します。従業員。結果を c.Name でグループ化することで、サブスクリプションを持たない従業員を含むすべての従業員の数を取得できます。

この調整されたクエリは、データのより包括的なビューを提供し、次の両方のサブスクリプション数を示します。 mailingSubscriptions にエントリがある従業員、エントリのない従業員は 0 カウント。

以上が関連テーブルの MySQL COUNT クエリにゼロカウントを含める方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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