Delete en Oracle

csl
05 de Agosto del 2005
Hola.

Tengo cierto problemilla al querer realizar un delete de una tabla. La idea es que quiero eliminar ciertos registros de una tabla que cumplen cierto criterios que están en otra tabla, la cual relacionaría con la primera con más de un campo.
El asunto es que si fuera con SQL Server la sintaxis sería algo así como

delete from Tabla1
from Tabla1 t1 inner join Tabla2 t2
on t1.campo1 = t2.campo1 and t1.campo2 = t2.campo2
where t2.campo3 = 'criterio';

El problema es que este tipo de sintaxis (que siempre creí que era estandar) da errores de compilacion para Oracle. Y salvo alguna "chapu-sintaxis" de última hora no he encontrado en ningún sitio cómo resolver el tema.

Gracias de antemano.

mermao
05 de Agosto del 2005
no seas mermao, oracle es compatible con el ansi sql, esa sintaxis la tienes igual en oracle pero tienes que estudiar un poco

csl
05 de Agosto del 2005
Hombre... el listo de turno.
Siento que tus neuronas no lleguen a más, pero la gente agradecería que si no tienes una solución que aportar te ahorraras contestar porque sinceramente me haces perder el tiempo leyendo una memez como la que has escrito.
Si alguien escribe en un foro es porque algo no le funciona, no consigue que funcione o simplemente no sabe cómo hacerlo (que evidentemente es tu caso) Pero parece ser que tu experiencia es bastante escasa y no has trabajado lo suficiente como para encontrarte en diferentes escenarios.
Gracias por tu "solución" pero creo que no voy a hacer caso de tus sabias palabras.

mermao
05 de Agosto del 2005
o sea que no vas a estudiar el lenguaje de oracle porque es mejor preguntar en los foros...... eres un lince chaval

csl
05 de Agosto del 2005
Te suplicaría que hicieses un cursillo de lengua española. No has debido leer que la gente seguro que te agradecerá que dejes de escribir si no tienes nada inteligente que aportar (que es lo se tata de hacer en un foro)

mermao
05 de Agosto del 2005
estudia y busca la solución en la documentación de oracle, te valdrá para más veces.... y a lo mejor hasta descubres otras cosas nuevas para ti

csl
05 de Agosto del 2005
... si supieras la cantidad de listos como tú que me he encontrado en la vida... Seguro que naciste enseñado. No necesitaste ni clases de educación. Vaya fiera... Espero que no vayas dando tantos consejos a la gente (te cuento un secreto, no lo necesitamos)
Lo mejor de todo es que es la primera vez que me conecto a un foro para preguntar algo. Y voy y me encuentro con el típico toca... :-D De verdad que ahora mismo me estás dando pena. Cuando alguien tiene algo que aportar lo hace, y si no procura no molestar.
En fin... que qué le vamos a hacer, verdad?
Bueno, y terminando...
PD: espero que no seas alumno, enrrollao
PD: ... y menos profesor ;-)

Rodolfo Reyes
05 de Agosto del 2005
Prueba con lo siguiente:

delete from tabla1 t1
where exists
(select 'x'
from tabla2 t2
where t2.campo1 = t1.campo1 and
t2.campo2 = t1.campo2 and
t2.campo3 = 'criterio'
)
/

Creo que te tendría que funcionar.