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

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

Mary-Kate Olsen
リリース: 2024-11-29 16:41:14
オリジナル
800 人が閲覧しました

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

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