我有一张表1与表2有一对多的关系。 表1还与表3具有一对多的关系
我想结合连接的结果,但所有即时获取都是重复值
这是结构:
table 1
reportnumber
1
2
3
table 2
reportnumber col1
1 a
1 b
2 c
3 a
table 3
reportnumber col2
1 x
1 y
1 z
2 w
预期结果集
reportnumber col1 col2
1 a x
1 b y
1 z
2 c w
3 a
我确定左外连接可以实现这一点,但我无法正确使用语法
任何线索?
这就是我正在尝试的
select * from table1 a
left outer join table2 b on a.reportnumber=b.reportnumber
left outer join table3 on a.reportnumer=c.reportnumber
但结果看起来像这样
reportnumber col1 col2
1 a x
1 a y
1 a z
1 b x
1 b y
1 b z
...
答案 0 :(得分:0)
这在MySQL中并不容易,但您可以使用变量来完成。这与join
几乎没有关系。或者,它与join
有很多关系,但您没有正确的join
密钥,而且您没有full outer join
。
解决方案是使用数据列枚举每个表中的行。然后使用枚举和reportnumber
:
select reportnumber, max(col1) as col1, max(col2) as col2
from ((select t2.reportnumber, col1, null as col2, @rn2 := @rn2 + 1 as rn
from table2 t2 cross join
(select @rn2 := 0) const
) union all
(select t3.reportnumber, null, t3.col2, @rn3 := @rn3 + 1 as rn
from table3 t3 cross join
(select @rn3 := 0) const
)
) t
group by reportnumber, rn;