Oracle
EJEMPLO DE UPDATE CON SUBCONSULTA
--creemos la tabla empleados con base en la tabla employees de HR, que quede con todos los campos y los datosexistentes
CREATE TABLE empleados
AS
(SELECT * FROM hr.employees)
--ahora creemos la tabla departamentos con base en las columnas department_id y department_name de la tabla departments de HR,que queden con los nombres cod_departamento y nom_departamento, que queden con los datos existentes.
CREATE TABLE departamentos
AS
(SELECT department_id cod_departamento,Department_name nom_departamento
FROM hr.departments)
--agreguemos la columna T_empleados (total empleados) en la tabla departamentos
ALTER TABLE departamentos
Add T_empleados number(3)--veamos qué datos tiene la tabla departamentos
SELECT * FROM departamentos
COD_DEPARTAMENTO
NOM_DEPARTAMENTO
T_EMPLEADOS
10
Administration
-
20
Marketing
-
30
Purchasing
-
40Human Resources
-
50
Shipping
-
60
IT
-
70
Public Relations
-
80
Sales
-
90
Executive
-
100
Finance
-
110
Accounting
-
120
Treasury
-
130
Corporate Tax
-
140Control And Credit
-
150
Shareholder Services
-
--Nótese que la columna que acabamos de agregar contiene valores nulos. Ahora vamos a llenar esta columna: a cada departamento le vamos aasignar el número total de empleados.
UPDATE departamentos
SET T_empleados = (SELECT COUNT(employee_id)
FROM empleados
wheredepartment_id=cod_departamento
)
como en este caso las dos columnas se llaman diferente, no fue necesario cualificar los nombres.
Si suponemos que las dos columnas tienen el mismo nombre(department_id), debemos cualificar el nombre de la columna de la tabla externa, así:
UPDATE departamentos
SET T_empleados = (SELECT COUNT(employee_id)
FROM empleados...
Regístrate para leer el documento completo.