我已经从以下问题创建了一个视图:
“创建一个视图以选择员工ID,员工姓名,雇用日期和部门编号。”
这是我的问题:
CREATE VIEW SIMPVIEW AS
SELECT EMPNO, ENAME, HIREDATE,DEPTNO
FROM EMP;
从上述查询中可以清楚地看到,视图名称为“SIMPVIEW”。现在我正在尝试编写另一个查询以回答以下问题:
“使用您在与department表连接的select语句中创建的视图,列出员工ID,员工姓名,部门名称和雇用日期。”
我明白基本上我需要加入我之前创建的视图和部门表的字段,因此我有两个问题:
由于我必须包含 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
答案 0 :(得分:0)
您需要根据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;
答案 1 :(得分:0)
阅读这个问题永远不会伤害。系统会要求您提供生成4列的查询;你的产生了5.因此答案是“它是正确的吗?”没有。
接下来,您没有说明表格是如何相关的。 可能是EMP.EMPNO
是DEPT.DEPTNO
的外键,但至少可以说是非传统的!如果没有其他信息,我会假设
EMP.DEPTNO =
DEPT.DEPTNO`和EMP.DEPTNO
不能为NULL。 在这种情况下,简单的内部JOIN
会做。
答案 2 :(得分:0)
希望这是你所需要的
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;