ホームページ >データベース >mysql チュートリアル >複数の LEFT JOIN によって不正確な訪問数が生成されるのはなぜですか?
複数の LEFT JOIN による不正確な訪問数について理解する
複数の LEFT JOIN
操作の連続的な性質により、加算ではなく乗算の結果が得られるため、指定されたクエリでは不正確な訪問数が生成されます。
最初は、grocery
テーブルと結合すると、ユーザーごとの食料品店への訪問が正しくカウントされます。ただし、後続の LEFT JOIN
と fishmarket
はユーザーごとに複数の行を作成し、食料品店の訪問数と各ユーザーの魚市場の訪問数を効果的に乗算します。 これは、両方のストアを訪問するユーザーの誤った「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 サイトの他の関連記事を参照してください。