2012-02-10 3 views
1

Как выполнить полное внешнее соединение на трех таблицах?Полная внешняя связь на трех таблицах

Я уже успешно присоединился к двум столам, но я не знаю, как добавить третью таблицу в мой запрос.

Вот мой (многословно) запрос:

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

Я не добавил «GROUP BY month». Я изменил ответ, попробую сейчас ;-) – Devart

+1

Мои извинения - я должен был заметить, что меня не хватало! Это отлично подходит для счета, ваша помощь и понимание очень ценятся. Спасибо, Деварт. –

 Смежные вопросы

  • Нет связанных вопросов^_^