应用OUTER JOIN上
我创建从以下问题视图视图:应用OUTER JOIN上
“创建一个视图来选择员工ID,员工姓名,雇用日期和部门编号。”
这里是我的查询:
CREATE VIEW SIMPVIEW AS
SELECT EMPNO, ENAME, HIREDATE,DEPTNO
FROM EMP;
从上面查询清楚,视图名为“SIMPVIEW”。现在,我正在尝试编写另一个查询以回答以下问题:
“使用您在与部门表连接的select语句中创建的视图来列出员工ID,员工姓名,部门名称和雇用日期“。
我明白,基本上我需要JOIN我之前创建的视图和部门表的莫名其妙,所以我有两个问题领域:
由于我必须包括所有从SIMPVIEW视图元素,有什么办法可以从视图中选择所有元素,而不必选择我在下面完成的每个元素。
SELECT s.empno,s.ename,s.hirdate,s.deptno,d.dname FROM SIMPVIEW s LEFT OUTER JOIN Dept d ON s.empno = d.deptno;
我的问题:是上面的查询是否正确?
这里有两个表(DEPT和EMP),供大家参考:
DEPT
DEPTNO,DNAME,LOC
EMP
EMPNO, ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO
您需要根据deptno
的加入,让您的查询应该像
SELECT s.empno,
s.ename,
s.hirdate,
s.deptno,
d.dname
FROM SIMPVIEW s
LEFT OUTER JOIN Dept d ON s.deptno = d.deptno;
是的,你可以重写查询为
SELECT s.*,
d.dname
FROM SIMPVIEW s
LEFT OUTER JOIN Dept d ON s.deptno = d.deptno;
谢谢您的宝贵意见。 – Tan 2013-04-23 05:59:17
如果你喜欢我的回答,你为什么不把它标记为已接受? – 2013-04-23 06:01:31
它从来没有痛苦地阅读这个问题。你被要求提供一个产生4列的查询;你的结果是5.因此,答案是“它是正确的吗?”是否。
接下来,你不会说表是如何相关的。它可能是EMP.EMPNO
是DEPT.DEPTNO
的外键,但至少可以说非常规!没有其他资料,我会承担
- ,这个问题你打算基于
EMP.DEPTNO =
DEPT.DEPTNO`加盟, - 一个员工必须在一个部门,
EMP.DEPTNO
不能为空。
在这种情况下,一个简单的内部JOIN
会做。
谢谢你的宝贵意见。 – Tan 2013-04-23 05:59:47
希望这是你需要什么
Create or replace view simpview
(empno, ename, hirdate, deptno,dname )
AS
SELECT s.empno,
s.ename,
s.hirdate,
s.deptno,
d.dname
FROM SIMPVIEW s
LEFT OUTER JOIN Dept d
ON s.deptno = d.deptno;
谢谢你的宝贵意见。 – Tan 2013-04-23 05:58:02
我认为没有必要为外连接。 – 2013-04-21 03:26:58
@DanBracuk:你可能是对的。但是,这可能会导致一些员工未被分配到任何特定部门。 – 2013-04-21 03:37:14