SQL с отношением один ко многим (три таблицы) - PullRequest
0 голосов
/ 12 марта 2019

У меня есть следующая структура таблиц:

enter image description here

И я хотел бы получить запрос, в котором я получаю все элементы из таблицы T1 , которые используются в связанных таблицах, показывая все поля из связанных таблиц ( Related_Table_A и Related_Table_B ).

Обратите внимание, что поля в A и B различны.

Спасибо за помощь!

Ответы [ 3 ]

0 голосов
/ 12 марта 2019
SELECT T1.ID_WF AS T1_ID_WF, Related_Table_A.ID_WF AS Related_Table_A_ID_WF, 
Related_Table_A.Table_A_Field1, Related_Table_B.ID_WF AS Related_Table_B_ID_WF, 
Related_Table_B.Table_B_Field1, Related_Table_B.ID_Table_B, 
Related_Table_A.ID_Table_A
FROM (T1 INNER JOIN Related_Table_B ON T1.[ID_WF] = Related_Table_B.[ID_WF]) 
INNER JOIN Related_Table_A ON T1.[ID_WF] = Related_Table_A.[ID_WF];
0 голосов
/ 13 марта 2019

Попробуй это.

SELECT 
    t1.ID_WF, t2.ID_Table_a, t3.ID_Table_B,
    t1.T1_field1, t1.T1_field2, t3.Table_B_Field1,
    t2.Table_A_Field1, t2.Table_A_Field2, t2.Table_A_Field3
FROM t1
    LEFT JOIN Related_Table_A t2
    ON t1.ID_WF = t2.ID_WF
    LEFT JOIN Related_Table_B t3
    ON t1.ID_WF = t3.ID_WF
0 голосов
/ 12 марта 2019

Не проверено, но это должно делать то, что вы хотите.Заполните пропущенные поля в поле выбора:

Select
    t1.ID_WF,
    rtA.ID_Table_A,
    rtB.ID_table_B
    [ ... ]
From
    T1 t1
    full outer join Related_Table_A rtA on (t1.ID_WF = rtA.ID_WF)
    full outer join Related_Table_B rtB on (t1.ID_WF = rtB.ID_WF)
Where
    rtA.ID_Table_A IS NOT NULL
    or
    rtB.ID_Table_B IS NOT NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...