Как присоединиться к двум объединенным подзапросам для соединения с пятью таблицами - PullRequest
0 голосов
/ 27 марта 2019

У меня есть два запроса, каждый из которых работает отлично и дает мне желаемые результаты.

Запрос 1:

SELECT COALESCE(m.ID, r.ID, s.ID) ID, 
    COALESCE(m.Test, r.Test) Test, 
    COALESCE(m.School, r.School, s.School) School, 
        m.M_Col1, m.M_Col2, m.M_Col3,  
        r.E_Col1, r.E_Col2, r.E_Col3, 
        s.First, s.Last 
    FROM Tabl1 AS m 
FULL OUTER JOIN Table2 AS r 
    ON(m.Test = r.Test AND m.ID = r.ID) 
INNER JOIN Table3 AS s 
    ON COALESCE(m.ID, r.ID)= s.ID

Это дает мне:

ID   TEST       M_Col1  M_Col2  M_Col3  E_Col1  E_Col2  E_Col3  First  Last
101  2013-MEG3   Stuff   Stuff   Stuff   Stuff   Stuff   Stuff   John  Smith
102  2013-MG3    Stuff   Stuff   Stuff                           Jane  Doe
102  2013-EG3                            Stuff   Stuff   Stuff   Jane  Doe
103  2013-MG5    Stuff   Stuff   Stuff                           Joe   Smithe
103  2013-EG5                            Stuff   Stuff   Stuff   Joe   Smithe
104  2013-MEG6   Stuff   Stuff   Stuff   Stuff   Stuff   Stuff   Jane  Dawn
105  2013-MG6    Stuff   Stuff   Stuff                           Jaime Swans
106  2013-EG6                            Stuff   Stuff   Stuff   Jaime Swans

Мой второй запрос, запрос 2:

SELECT a.ID, a.Test, t.Other, t.Other_No 
   FROM Table4 as t
FULL OUTER JOIN Table5 as a
   ON (a.Other_Key = t.Other_Key)

Это дает мне похожий результат таблицы.

Что я хочу сделать, так это объединить эти два подзапроса, в основном:

(
  SELECT
    COALESCE(m.ID, r.ID, a.ID) ID, 
    COALESCE(m.Test, r.Test, a.Test) Test, 
    COALESCE(m.School, r.School, s.School) School, 
        m.M_Col1, m.M_Col2, m.M_Col3,  
        r.E_Col1, r.E_Col2, r.E_Col3, 
        s.First, s.Last 
FROM
  Tabl1 AS m 
FULL OUTER JOIN
  Table2 AS r 
    ON(m.Test = r.Test AND m.ID = r.ID) 
INNER JOIN
  Table3 AS s 
    ON COALESCE(m.ID, r.ID)= s.ID
)
  q1

FULL OUTER JOIN

(
  SELECT
    a.ID, a.Test, t.Other, t.Other_No 
  FROM
    Table4 as t
  FULL OUTER JOIN
    Table5 as a
      ON (a.Other_Key = t.Other_Key)
)
  q2
    ON(q1.ID = q2.ID)

Но это не работает.Это просто дает мне результаты Query1.Что я делаю не так?

1 Ответ

1 голос
/ 27 марта 2019

Возможно, здесь много чего предполагается, но я думаю, что это может быть близко к тому, что вы хотите:

SELECT COALESCE(m.ID, r.ID, s.ID, q2.ID) ID, --added ID from query 2 to coalesce function
    COALESCE(m.Test, r.Test, s.Test, q2.Test) Test, --added Test from query 2 to coalesce function
    COALESCE(m.School, r.School, s.School) School, 
    m.M_Col1, m.M_Col2, m.M_Col3,  
    r.E_Col1, r.E_Col2, r.E_Col3, 
    s.First, 
    s.Last 
    --add q2.Other or q2.Other_No here if you want to return from query 2
FROM Tabl1 AS m 
FULL OUTER JOIN Table2 AS r 
    ON(m.Test = r.Test AND m.ID = r.ID) 
INNER JOIN Table3 AS s 
    ON COALESCE(m.ID, r.ID)= s.ID
FULL OUTER JOIN (
    SELECT b.ID, b.Test, t.Other, t.Other_No 
    FROM Table4 as t
    FULL OUTER JOIN Table5 as a
    ON (a.Other_Key = t.Other_Key)
) q2 ON COALESCE(m.ID, r.ID, s.ID) = q2.ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...