我差点儿,但需要一点点推动。
我有以下表格:
EMPLEADOS
(员工):
+--------+----------+------------+----------+------------+---------+----------+--------+
| EMP_NO | APELLIDO | OFICIO | DIRECTOR | FECHA_ALTA | SALARIO | COMISION | DEP_NO |
+--------+----------+------------+----------+------------+---------+----------+--------+
| 7499 | ALONSO | VENDEDOR | 7698 | 1981-02-23 | 1400.00 | 400.00 | 30 |
| 7521 | LOPEZ | EMPLEADO | 7782 | 1981-05-08 | 1350.50 | NULL | 10 |
| 7654 | MARTIN | VENDEDOR | 7698 | 1981-09-28 | 1500.00 | 1600.00 | 30 |
| 7698 | GARRIDO | DIRECTOR | 7839 | 1981-05-01 | 3850.12 | NULL | 30 |
| 7782 | MARTINEZ | DIRECTOR | 7839 | 1981-06-09 | 2450.00 | NULL | 10 |
| 7839 | REY | PRESIDENTE | NULL | 1981-11-17 | 6000.00 | NULL | 10 |
| 7844 | CALVO | VENDEDOR | 7698 | 1981-09-08 | 1800.00 | 0.00 | 30 |
| 7876 | GIL | ANALISTA | 7782 | 1982-05-06 | 3350.00 | NULL | 20 |
| 7900 | JIMENEZ | EMPLEADO | 7782 | 1983-03-24 | 1400.00 | NULL | 20 |
+--------+----------+------------+----------+------------+---------+----------+--------+
CLIENTES
(客户):
+------------+-------------------------+-----------+-------------+------+-------+----------------+
| CLIENTE_NO | NOMBRE | LOCALIDAD | VENDEDOR_NO | DEBE | HABER | LIMITE_CREDITO |
+------------+-------------------------+-----------+-------------+------+-------+----------------+
| 101 | DISTRIBUCIONES GOMEZ | MADRID | 7499 | 0.00 | 0.00 | 5000.00 |
| 102 | LOGITRONICA S.L | BARCELONA | 7654 | 0.00 | 0.00 | 5000.00 |
| 103 | INDUSTRIAS LACTEAS S.A. | LAS ROZAS | 7844 | 0.00 | 0.00 | 10000.00 |
| 104 | TALLERES ESTESO S.A. | SEVILLA | 7654 | 0.00 | 0.00 | 5000.00 |
| 105 | EDICIONES SANZ | BARCELONA | 7499 | 0.00 | 0.00 | 5000.00 |
| 106 | SIGNOLOGIC S.A. | MADRID | 7654 | 0.00 | 0.00 | 5000.00 |
| 107 | MARTIN Y ASOCIADOS S.L. | ARAVACA | 7844 | 0.00 | 0.00 | 10000.00 |
| 108 | MANUFACTURAS ALI S.A. | SEVILLA | 7654 | 0.00 | 0.00 | 5000.00 |
+------------+-------------------------+-----------+-------------+------+-------+----------------+
我需要使用表EMPLEADOS中的列EMP_NO,APELLIDO和OFICIO以及来自CLIENTES的表中的CLIENTE_NO,NOMBRE来创建视图。任务是创建所有员工的视图并与他们(已分配)客户端相对应(此处的引用是EMPLEADOS表中的emp_no与表CLIENTES中的VENDEDOR_NO相同)但是列表必须包括所有员工,即使他们不在没有任何客户分配给他们。而这一点是我正在努力的事情。
我得到的是:
create view V_EMPLEADOS (EMP_NO, APELLIDO, OFICIO, CLIENTE_NO, NOMBRE_CL) AS
-> select em.emp_no, em.apellido, em.oficio, cl.cliente_no, cl.nombre
-> from EMPLEADOS em, CLIENTES cl
-> where em.emp_no = cl.vendedor_no;
但是,当然只会创建一些只分配了一些客户的员工的视图。请帮忙。
答案 0 :(得分:4)
您需要left join
:
create view V_EMPLEADOS (EMP_NO, APELLIDO, OFICIO, CLIENTE_NO, NOMBRE_CL) AS
select em.emp_no, em.apellido, em.oficio, cl.cliente_no, cl.nombre
from EMPLEADOS em left join
CLIENTES cl
on em.emp_no = cl.vendedor_no;
简单规则:从不在FROM
子句中使用逗号。 始终使用JOIN
子句中的条件使用正确的ON
语法。