考虑我有两个查询与下面的结果集...第一个结果集是为学生,所以有关教师的所有列是空的..第二个结果集是有关的相关学生辅导员和列都为空且二者共享一些常见的列.. 学生:如何合并Oracle的所有联盟的结果
uid f_name m_name l_name class school Section Dept. Branch Title
1 abc c dey 2 NYU 1 null null null
2 cde d rey 3 CU 2 null null null
3 xyz r mey 4 LSU 3 null null null
老师:
uid f_name m_name l_name class school Section Dept. Branch Title
4 wss c tey null null null Science Biology Asso.Prof
2 cde d rey null null null Arts Music Asso.Prof
5 rrr r jey null null null Science Chemistry Prof
如果您在上面的结果集看,UID 2共同的结果集,这基本上意味着一位教授可以同时也是一名学生......现在我想将这两个查询加入/合并成一个通用结果集,称为“用户”,他们基本上是老师和学生。
“用户”的结果集应该是唯一的UID。如果我使用UNION ALL,将有上UID 2.重复我需要一个查询,可以合并列单行......结果集应该是:
1 abc c dey 2 NYU 1 null null null
2 cde d rey 3 CU 2 Arts Music Asso.Prof
3 xyz r mey 4 LSU 3 null null null
4 wss c tey null null null Science Biology Asso.Prof
5 rrr r jey null null null Science Chemistry Prof
注以上2,它既有学生和教授的详细信息在一行...
我如何在Oracle中实现这一目标?感谢你的帮助。
我认为UNION在这里不是正确的方法。你的2个查询的来源是什么?请显示SQL。无论是学生还是老师,都有一个存储“人员”的源表,或者你有两个不同的表格,这是不好的设计。对于这两种情况,有两种不同的方法,我不知道应该选择哪一种,因为您没有提供足够的信息。 –
@ThomasG这两个查询是复杂的连接查询,但都使用一个常见的来源,称为“人员”。但是无法区分一个人是学生还是教师,只是存储了个人和他的细节。这可能是一个糟糕的设计,但它已经被放置并用于其他数百万个其他地方......假设有另外两张桌子,学生和老师......所以内心加入的学生,人员和其他一些与学生相关的桌子给了我所有的学生细节..同样,内部加入教师表与人,其他人的数据表给我所有的教师的详细信息。 –
看完整的外部加入学生与老师在uid –