我正在编写代码,以更好地格式化已确认使用自然连接的作品的输出。我得到的输出(如下所示)几乎与使用其他代码获得的正确输出完美匹配,除了它错过了连接“内部”的值。我知道自然连接方法会跳过这一步,但是我不确定该如何显示它。
使用自然联接代码
select * from
(
select * from
((select part_num, num as a0 from Parts where num = :asm0)
natural left join
(select part_num, num as a1 from Parts where num = :asm1)
natural left join
(select part_num, num as a2 from Parts where num = :asm2)
natural left join
(select part_num, num as a3 from Parts where num = :asm3))
where a1 is null or a2 is null or a3 is null
union
select * from
((select part_num, num as a0 from Parts where num = :asm0)
natural right join
(select part_num, num as a1 from Parts where num = :asm1)
natural right join
(select part_num, num as a2 from Parts where num = :asm2)
natural right join
(select part_num, num as a3 from Parts where num = :asm3))
where a0 is null
)
我得到了输出
Number A0 A1 A2 A3
351-2927-060 944-3234-016 944-3234-212 944-3234-242
351-2930-330 944-3234-010 944-3234-212
351-2930-430 **Should have 016 here** 944-3234-242
351-3487-344 944-3234-212 944-3234-242
使用我知道的不同代码返回我得到的正确输出
Number A's
351-2927-060 944-3234-242
351-2930-330 944-3234-010
351-2930-330 944-3234-212
351-2930-430 944-3234-016 shows the missing number
351-2930-430 944-3234-242
351-3487-344 944-3234-212
351-3487-344 944-3234-242
有没有办法让我使用自然联接方法显示此值?
答案 0 :(得分:0)
最近学到了这一点,但有一个完全连接之类的东西可以完成我想做的事情。
select * from
(
(select part_num, num as a0 from Parts where num = :asm0)
natural full join
(select part_num, num as a1 from Parts where num = :asm1)
natural full join
(select part_num, num as a2 from Parts where num = :asm2)
natural full join
(select part_num, num as a3 from Parts where num = :asm3)
)
where a0 != any(a1,a2,a3) or a1 != any (a2,a3) or a2 != any(a3)