MSSQL查询框架

时间:2018-09-26 10:19:05

标签: sql-server

我有3个表,例如master表和2个子表。我正在使用加入条件,但未达到预期的客户需求。

enter image description here

查询:

select * from(
select a.id as mid,b.id,b.val from ##mastertable a right join ##table1 b 
on a.id=b.id ) as c inner join ##table2 d on c.mid=d.id 

请提供其他任何方式来获得适当的结果。

4 个答案:

答案 0 :(得分:0)

尝试:

Select a.id, b.id, b.val
From (mastertable a
Right Join table1 b 
On a.id = b.id)
Inner Join table2 d
On a.id = d.id;

答案 1 :(得分:0)

尝试以下方法:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=2b58625961c444997829abb45d40417b

select * from master m inner join
(select table2.id as id1, table2.value as val1, table1.value as val2, table1.id as id2
from table2 left join table1 
on table1.id=table2.id and  table1.value=table2.value)x on m.id=x.id1

答案 2 :(得分:0)

这应该有效:

select * from (
(select master.id from master_table) master
LEFT OUTER JOIN
(select table1.id, table1.value from table_1) table1
ON
master.id = table1.id
FULL OUTER JOIN
(select table2.id, table2.value from table_2) table2
ON
table1.id = table2.id
AND
table1.val = table2.val
)
;

答案 3 :(得分:0)

这与您预期的相同

select 
m.id, t1.id, t1.value, t2.id, t2.value
from
m
left join
t1
on
m.id = t1.id
left join
t2
on
t1.id = t2.id and t1.value = t2.value
order by m.id, t1.value

这里M是您的主表,T1是table1,t2是table2