ホームページ >データベース >mysql チュートリアル >複数の LEFT JOIN によって不正確な訪問数が生成されるのはなぜですか?

複数の LEFT JOIN によって不正確な訪問数が生成されるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-23 12:19:10664ブラウズ

Why are Multiple LEFT JOINs Producing Incorrect Visit Counts?

複数の LEFT JOIN による不正確な訪問数について理解する

複数の LEFT JOIN 操作の連続的な性質により、加算ではなく乗算の結果が得られるため、指定されたクエリでは不正確な訪問数が生成されます。

最初は、grocery テーブルと結合すると、ユーザーごとの食料品店への訪問が正しくカウントされます。ただし、後続の LEFT JOINfishmarket はユーザーごとに複数の行を作成し、食料品店の訪問数と各ユーザーの魚市場の訪問数を効果的に乗算します。 これは、両方のストアを訪問するユーザーの誤った「12」カウントの説明になります。

解決策: 正確な集計のためのサブクエリ

この問題は、サブクエリを使用して店舗ごとに訪問数を個別に集計することで解決されます。

<code class="language-sql">SELECT u.id,
       u.account_balance,
       (SELECT COUNT(*) FROM grocery WHERE user_id = u.id) AS "# of grocery visits",
       (SELECT COUNT(*) FROM fishmarket WHERE user_id = u.id) AS "# of fishmarket visits"
FROM users u
ORDER BY u.id;</code>

この改訂されたクエリは、各ユーザーの食料品店や魚市場への訪問を正確にカウントして表示し、正しい集計データを提供します。

以上が複数の LEFT JOIN によって不正確な訪問数が生成されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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