我正在使用SQL Server解决以下问题。
我有3个表T1,T2,T3
T1 :
ID Name Country
----------------------
1 PR IN
2 AR US
T2 :
ID AGE
------------
1 32
2 36
3 40
T3 :
ID T1_ID T2_ID Amount
--------------------------------
1 1 1 100
2 1 2 300
必填输出
T1.Name T2.Age T3.Amount
---------------------------------
PR 32 100
PR 36 200
PR 40 0
我的查询是:
select
T1.name, T2.Age, T3.amount
from
T3
join
T1 on T1.id = T3.T1_ID --fixed a typo here
right join
T2 on T2.id = T3.T2_ID
where
T1.id = 1
我当前的输出是:
T1.Name T2.Age T3.Amount
--------------------------------
PR 32 100
PR 36 200
在此方面,我将不胜感激
答案 0 :(得分:1)
在T2和T1上启动 FROM 语句,因为您希望T2和T1的所有记录都作为笛卡尔积,受WHERE限制
代替在 FROM 中加入T3,对T3使用 subselect 可以使您使用 ISNULL :
SELECT T1.NAME,
T2.age,
ISNULL((SELECT amount
FROM T3
WHERE T1.id = T3.T1_id
AND T2.id = T3.T2_id), 0) AS Amount
FROM T2 CROSS JOIN
T1
WHERE T1.id = 1