Oracle - FUNCION DELETE TABLA 1 con referencia a tabla 2

   
Vista:

FUNCION DELETE TABLA 1 con referencia a tabla 2

Publicado por carlos (4 intervenciones) el 10/08/2016 18:32:12
Hola! tengo este problema

Quiero hacer una eliminacion de una tabla con referencia a otra en oracle xpress edition 11g.

Lo que quiero hacer es Eliminar a los empleados que estén en un presupuesto mayor a 30000

Si hago una consulta con esos parámetros me muestra 6 resultados.
1
2
3
4
SELECT * FROM EMPLEADOS
JOIN DEPARTAMENTOS ON
DEPARTAMENTOS."COD_DEPARTAMENTO"=EMPLEADOS."COD_DEPARTAMENTO"
WHERE DEPARTAMENTOS."PRESUPUESTO">30000;

quiero borrar esos 6 resultados y no he podido he intentado con INNER JOIN
(Esta la probe en SQL Server y funciono jejeje se que no es lo mismo pero estoy intentando varias cosas)
1
2
3
4
DELETE EMPLEADOS FROM EMPLEADOS
INNER JOIN DEPARTAMENTOS ON
DEPARTAMENTOS."COD_DEPARTAMENTO"=EMPLEADOS."COD_DEPARTAMENTO"
WHERE DEPARTAMENTOS."PRESUPUESTO">30000;

Y Me da este error.
1
2
3
4
5
6
7
8
9
10
11
Error que empieza en la línea: 8 del comando -
DELETE EMPLEADOS FROM EMPLEADOS
INNER JOIN DEPARTAMENTOS ON
DEPARTAMENTOS."COD_DEPARTAMENTO"=EMPLEADOS."COD_DEPARTAMENTO"
WHERE DEPARTAMENTOS."PRESUPUESTO">30000
Error en la línea de comandos : 8 Columna : 18
Informe de error -
Error SQL: ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:
*Action:

Tambien intente con esta otra forma
1
2
3
DELETE FROM EMPLEADOS
WHERE EMPLEADOS."COD_DEPARTAMENTO" = (SELECT DEPARTAMENTOS."COD_DEPARTAMENTO" FROM DEPARTAMENTOS
WHERE DEPARTAMENTOS."PRESUPUESTO">30000);

y tampoco me da error.

1
2
3
4
5
6
7
8
9
Error que empieza en la línea: 4 del comando :
DELETE FROM EMPLEADOS
WHERE EMPLEADOS."COD_DEPARTAMENTO" = (SELECT DEPARTAMENTOS."COD_DEPARTAMENTO" FROM DEPARTAMENTOS
WHERE DEPARTAMENTOS."PRESUPUESTO">30000)
Informe de error -
Error SQL: ORA-01427: single-row subquery returns more than one row
01427. 00000 -  "single-row subquery returns more than one row"
*Cause:
*Action:


alguien que me pueda ayudar. GRACIAS.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

FUNCION DELETE TABLA 1 con referencia a tabla 2

Publicado por Carlos (4 intervenciones) el 12/08/2016 06:43:59
Yaaa lo resolvi por si a alguien le sirve utilize la segunda opcion y unicamente cambie el igual por un "IN"

1
2
3
DELETE FROM EMPLEADOS
WHERE EMPLEADOS."COD_DEPARTAMENTO" IN (SELECT DEPARTAMENTOS."COD_DEPARTAMENTO" FROM DEPARTAMENTOS
WHERE DEPARTAMENTOS."PRESUPUESTO">30000);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

FUNCION DELETE TABLA 1 con referencia a tabla 2

Publicado por MIGUEL ANGEL (2 intervenciones) el 18/08/2016 22:26:05
Otra opción es esta, me base en la 1

DELETE
FROM(
SELECT *
FROM EMPLEADOS A, DEPARTAMENTOS B
WHERE A.COD_DEPARTAMENTO = B.COD_DEPARTAMENTO
AND B.PRESUPUESTO >30000
);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar