联合连接是基于自连接基础上,由于null的原因少了默些行,联合连接再硬添加上。
--联合连接和自连接 联合连接 硬生生的插了一行 《纵向连接 -》没啥用》 其余的都是行向连接 --输出每个员工的信命/工资和上司的姓名 select E1.ename ,E1.sal ,E2.ename from emp "E1" join emp "E2" on E1.mgr=E2.empno --eroor 13行 自连接少了null一行 自己连接的
select E1.ename ,E1.sal ,E2.ename "shang si" from emp "E1" join emp "E2" on E1.mgr=E2.empno union select ename ,sal , '插入' from emp where mgr is null
select ename ,sal ,mgr from emp --错 查的是上司的学号 不是名字
简单的举个例子分析上面的问题:
下面两个关系模式R:如果要输出每个员工的信命/工资和上司的名字:首先想到自连接
表 1 表 2
empno mgr empno mgr 1 2 1 2 2 3 2 3
3 null 3 null
也就是1表中的mgr和2表中的empno学号相等来建立自连接。E1.mgr=E2.empno
表一:1 2 对应 表二:2 3
表一:2 3 对应 表二:3 null
表一:3 null 不可与表2连接
那么联合的主要目的就是为了解决表一:3 null 不可与表2连接,所以联合的自连接有13行有联合的自连接有14行
E2.ename from emp "E1" join emp "E2" on E1.mgr=E2.empno E2.ename 相当于把boss的名字输出了
基于 sqlsever -