Я новичок в написании SQL-запросов. Может кто-нибудь помочь мне написать SQL-запрос для следующих условий и объединений?
У меня есть 4 таблицы, скажем, T1
, T2
, T3
и T4
T1 have columns a1(PK), a2, a3, a4
T2 have columns b1(PK), a1(FK), b2
T3 have columns c1(PK), a1(FK)
T4 have columns d1(PK), c1(FK), d2, d3
Условия:
Я хочу получить все столбцы с T1
, когда a4 == "xx"
Если T1.a1 == T2.a1
и T1.a2 == "x"
, тогда я хочу, чтобы b2
был включен в окончательный результат как новый столбец .
Если T3.c1 == T4.c1
и T4.d2 == "y"
, то взять значение из d3
, которое необходимо присоединить к шагу 4
Если T1.a1 == T3.a1
и T1.a2 == "z"
, то значение из d3
(шаг 3) должно быть включено в новый столбец окончательного результата
Я пытаюсь решить, как показано ниже, но я не знаю, как добавить значение d3
с шага 3 к b2
в конечном результате.
select T1.a1,T1.a2,T1.a3,T1.a4,T2.b2 from
T1
left join T2 on T1.a1 == T2.a1 AND T1.a2 == "x"
left join (
select T3.a1,T4.d3 from T3,T4
where T3.c1 == T4.c1 AND T4.d2 == "y")
) joined on joined.a1 == T1.a1 and T1.a2 == "z"
where a4 == "xx";
Пример данных
T1 table :
a1 | a2 | a3 | a4 |
1 | x | cat| xx |
2 | aa | hat| la |
3 | z | mat| xx |
T2 table :
b1 | b2 | a1 |
11 | 984 | 1 |
22 | 234 | 2 |
T3 table :
c1 | a1 |
111 | 3 |
222 | 7 |
T4 table :
d1 | d2 | d3 | c1 |
1111 | y | 100 | 111 |
2222 | yy | 200 | 333 |
Expected Result :
a1 | a2 | a3 | a4 | new column
1 | x | cat | xx | 984 (from T2.b2)
3 | z | mat | xx | 100 (from T4.d3)
Пожалуйста, помогите мне исправить мой запрос. Ценю вашу помощь.