2012-02-10 18 views
1

3つのテーブルに対して完全な外部結合を実行するにはどうすればよいでしょうか?3つのテーブルに対する完全な外部結合

私はすでに2つのテーブルに参加していますが、3番目のテーブルをクエリに追加する方法についてはわかりません。任意の案内がはるかに高く評価されて

SELECT MONTH(t1.datetime) AS month, COUNT(DISTINCT t1.column) AS t1Count, COUNT(DISTINCT t2.column) AS t2Count 
FROM t1 
LEFT OUTER JOIN t2 ON MONTH(t2.datetime) = MONTH(t1.datetime) 
GROUP BY MONTH(t1.datetime) 
UNION 
SELECT MONTH(t1.datetime) AS month, COUNT(DISTINCT t1.column) AS t1Count, COUNT(DISTINCT t2.column) AS t2Count 
FROM t1 
RIGHT OUTER JOIN t2 ON MONTH(t2.datetime) = MONTH(t1.datetime) 
GROUP BY MONTH(t2.datetime) 

:ここ

は私の(長ったらしい)クエリです。

答えて

4

この文字列で検索してください -

(編集済み)

SELECT 
    t.month, 
    COUNT(DISTINCT t1.column) t1count, 
    COUNT(DISTINCT t2.column) t2count, 
    COUNT(DISTINCT t3.column) t3count 
FROM 
    (SELECT MONTH(datetime) AS month FROM t1 
    UNION 
    SELECT MONTH(datetime) AS month FROM t2 
    UNION 
    SELECT MONTH(datetime) AS month FROM t3 
) t 
    LEFT JOIN t1 
    ON t.month = MONTH(t1.datetime) 
    LEFT JOIN t2 
    ON t.month = MONTH(t2.datetime) 
    LEFT JOIN t3 
    ON t.month = MONTH(t3.datetime) 
    GROUP BY 
    month 
+0

はご提案をいただき、ありがとうございます。残念ながら、これは1ヶ月分のレコードを返すが(ただし、3つのテーブルのカウント値は正しい)、すべての月の値を表示しようとしている。 –

+1

私は 'GROUP BY月'を追加しませんでした。私は答えを変更しました、今それを試して;-) – Devart

+1

私の謝罪 - 私は自分自身が不足していたことに気づいたはずです!これは、法案に完全に適合し、あなたの助けと洞察力は非常に高く評価されます。デヴァートありがとうございます。 –

関連する問題