テーブルの結合に問題があります。テーブルの例を次に示します。
表 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 を試しましたが、どれも機能しませんでした。
もちろん、間違った場所でそれらを使用した可能性があります。
しかし、「すべて含まれている」値を取得した最初のステートメントでは
、実際よりも何千倍も高く乗算されます。