テーブルの結合に問題があります。テーブルの例を次に示します。
表 A: ( 30 行)
╔════╦════════════╦═════════════╗ ║ ID ║ 名前 ║ 説明 ║ ╠════╬════════════╬═════════════╣ ║ 1 ║ タイプ ║ Unicode アート ║ ║ 2 ║ ヘッダー ║ スプレッドシート ║ ║ 3 ║ 自動位置合わせ ║ オフ ║ ╚════╩════════════╩═════════════╝
表 B: ( 100 行 )
╔════╦════════════╦═════════════╦══════════ ║ ID ║ 名前 ║ 説明 ║ TableA ║ ╠════╬════════════╬═════════════╬═════════ ║ 1 ║ タイプ ║ Unicode アート ║ 1 ║ ║ 2 ║ ヘッダー ║ スプレッドシート ║ 1 ║ ║ 3 ║ 自動位置合わせ ║ オフ ║ 2 ║ .
表 C: ( 8000 行 )
╔════╦════════════╦═════════════╦══════════ ║ ID ║ 記事 ║ テキスト ║ TableB ║ ╠════╬════════════╬═════════════╬═════════ ║ 1 ║ タイプ ║ Unicode アート ║ 1 ║ ║ 2 ║ ヘッダー ║ スプレッドシート ║ 1 ║ ║ 3 ║ 自動位置合わせ ║ オフ ║ 2 ║ .
テーブル D: ( 100 000 行とカウント )
╔════╦═══════════╦════════════╦═════════════╦═════ ════╗ ║ ID ║ 日付 ║ クリック数 ║ インプレッション数 ║ TableC ║ ╠════╬═══════════╬════════════╬═════════════╬═════ ════╣ ║ 1 ║ 20120814 ║ 10 ║ 3 ║ 1 ║ ║ 2 ║ 20120815 ║ 13 ║ 5 ║ 1 ║ ║ 3 ║ 20120816 ║ 15 ║ 10 ║ 2 ║ ╚════╩═══════════╩════════════╩═════════════╩═════ ════╝
表 E: ( 200 000 行とカウント )
╔════╦═══════════╦════════════╦═══════════╦═══════ ══╗ ║ ID ║ 日付 ║ ビュー ║ 訪問者 ║ TableC ║ ╠════╬═══════════╬════════════╬═══════════╬═══════ ══╣ ║ 1 ║ 20120814 ║ 10 ║ 3 ║ 1 ║ ║ 2 ║ 20120815 ║ 13 ║ 5 ║ 1 ║ ║ 3 ║ 20120816 ║ 15 ║ 10 ║ 2 ║ ║ 4 ║ 20120817 ║ 8 ║ 7 ║ 2 ║ ║ 5 ║ 20120818 ║ 9 ║ 4 ║ 2 ║ ╚════╩═══════════╩════════════╩═══════════╩═══════ ══╝
単一の SQL ステートメントでこのテーブルをクエリします。
選択する 名前、 説明、 SUM(D.クリック), SUM(D.インプレッション), SUM(E.ビュー), SUM(訪問者数) から あ 左結合B ON A.ID=B.TableA 左結合 C ON B.ID=C.TableB 左結合 D ON C.ID=D.TableC LEFT JOIN E ON C.ID=E.TableC グループ化 援助
問題は、クエリがテーブル D とテーブル E に対して無効な SUM を返すことですが
、個々のクエリでテーブル D とテーブル E をクエリすると、正しい値が得られます。
選択する 名前、 説明、 SUM(D.クリック), SUM(D.インプレッション) から あ 左結合B ON A.ID=B.TableA 左結合 C ON B.ID=C.TableB 左結合 D ON C.ID=D.TableC グループ化 援助
EDIT 1:
RIGHT JOIN、JOIN、LEFT OUTER JOIN を試しましたが、どれも機能しませんでした。
もちろん、間違った場所でそれらを使用した可能性があります。
しかし、「すべて含まれている」値を取得した最初のステートメントでは
、実際よりも何千倍も高く乗算されます。