Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Update Con Inner Join

Estas en el tema de Update Con Inner Join en el foro de Oracle en Foros del Web. haber tengo una duda, existe en oracle los Inner join, si existen me podrian decir cual es el error en este update me envia este ...
  #1 (permalink)  
Antiguo 05/09/2006, 14:23
Avatar de rock_blues.NET  
Fecha de Ingreso: septiembre-2005
Mensajes: 207
Antigüedad: 12 años, 3 meses
Puntos: 0
Update Con Inner Join

haber tengo una duda, existe en oracle los Inner join, si existen me podrian decir cual es el error en este update

me envia este codigo de oracle
ORA-00933: SQL command not properly ended

Código HTML:
UPDATE NOTAS SET C5=0, P5=0, C6=0, P6=0, C7=0, P7=0, C8=0, P8=0, C9=0, P9=0, C10=0, P10=0, C11=0, P11=0, C12=0, P12=0, C13=0, P13=0, C14=0, P14=0, C15=0, P15=0, EX3=0, PEX3=0, P1=0, GLOSA_C1='SIN COMENTARIO', P2=0, GLOSA_C2='SIN COMENTARIO', P3=0, GLOSA_C3='SIN COMENTARIO', P4=0, GLOSA_C4='SIN COMENTARIO', PEX1=0, GLOSA_EX1='SIN COMENTARIO', PEX2=0, GLOSA_EX2='SIN COMENTARIO', CANT_NOTAS=4, CANT_EXAMENES=2 INNER JOIN DETALLE_ASIGNACION_ALUMNO ON(DETALLE_ASIGNACION_ALUMNO.ID_ALUMNO=ALUMNO.ID_ALUMNO) INNER JOIN NOTAS ON(DETALLE_ASIGNACION_ALUMNO.ID_ALUMNO=NOTAS.ID_ALUMNO) WHERE DETALLE_ASIGNACION_ALUMNO.ID_DETALLE_ALUMNO='1' AND NOTAS.ID_ASIGNATURA='2'

grax por la ayuda
  #2 (permalink)  
Antiguo 15/09/2006, 05:57
Avatar de Worp9975  
Fecha de Ingreso: mayo-2006
Ubicación: LV-426
Mensajes: 203
Antigüedad: 11 años, 6 meses
Puntos: 1
Hola,

no entiendo muy bien lo que intentas hacer con la tabla NOTAS . Es una vista ? , te voy a contar como son los INNER JOIN en oracle y los OUTER y tú decides como enfocarlo. Utilizamos el equema de SCOTT como ejemplo (viene en la bbdd preconfigurada)

INNER JOIN
Código PHP:
SELECT 
FROM DEPTEMP 
WHERE EMP
.DEPTNO DEPT.DEPTNO 
OUTER JOIN
Código PHP:
SELECT 
FROM DEPTEMP 
WHERE EMP
.DEPTNO DEPT.DEPTNO(+) 
(En este caso nos dará el mismo resultado puesto que en la base de datos preconfigurada hay una FK que no admite nulos por lo que el caso del OUTER no se presentará pero así tienes un ejemplo)

El UPDATE que intentas hacer me suena un poco raro. Normalmente los UPDATEs se hacen sobre una sola tabla habiendo calculado y validado todas las FK antes y evitar ese tipo de operaciones tan complejas,

Salu2
__________________
Time is the fire in which we burn
  #3 (permalink)  
Antiguo 10/06/2008, 09:52
 
Fecha de Ingreso: septiembre-2003
Ubicación: Arequipa - Peru
Mensajes: 16
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Update Con Inner Join

Bueno primero q nada solo mencionar q los inner ... asi literalmente si existen en oracle ... pero lo q aun no he logrado es hacer un update utilizando inners asi q yo tambien ando en solucion a ese problema ... hace un tiempo encontre una solucion pero ... no recuerdo muy bien como era ... a penas la encuentre te dateo como ....

Saludos
  #4 (permalink)  
Antiguo 10/06/2008, 10:27
 
Fecha de Ingreso: marzo-2008
Ubicación: Euskadi
Mensajes: 64
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Update Con Inner Join

Hola,

la verdad es que la update que nos has puesto tiene muy mala pinta. Por ejemplo veo que intentas acceder a la tabla ALUMNO sin hacer la join. Intenta hacer algo así, a ver si te funciona (es orientativo, claro):

Código:
 UPDATE NOTAS N SET...
 WHERE N.ID_ASIGNATURA = '2'
 AND EXISTS(SELECT 1 FROM DETALLE_ASIGNACION_ALUMNO DET, ALUMNOS ALU 
  	 		WHERE DET.ID_DETALLE_ALUMNO = '1' AND DET.ID_ALUMNO = ALU.ID_ALUMNO AND ALU.ID_ALUMNO = N.ID_ALUMNO);
Saludos.
  #5 (permalink)  
Antiguo 28/08/2008, 06:36
 
Fecha de Ingreso: abril-2008
Mensajes: 9
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Update Con Inner Join

Para realizar un update sobre una consulta de datos cruzados.
En T-Sql seria así::

Código:
UPDATE RG_Tabla1
SET campo1 = 0
FROM RG_Tabla1 a
INNER JOIN RG_Tabla2 b on
	a.id_aa = b.id_aa and
	a.id_bb = b.id_bb
WHERE 
a.campoX = ....
Espero serviros de ayuda!
Saludos!
  #6 (permalink)  
Antiguo 04/05/2010, 12:48
 
Fecha de Ingreso: enero-2007
Mensajes: 4
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Update Con Inner Join

Intente probar con los ejemplos de aca y ps no sirvio... Dejo un ejemplo completo
UPDATE admcalendario.evento_sede eve
SET eve.evs_estado = :vestadonuevo
WHERE eve.evs_id IN (
SELECT evs.evs_id
FROM admcalendario.evento_sede evs INNER JOIN planformacion.ficha_caracterizacion fcp
ON fcp.fic_id = evs.fic_id
WHERE evs.evs_dir_general <> 1
AND TO_CHAR (evs.evs_fch_final, 'YYYYMMDD') =
TO_CHAR (SYSDATE - 1, 'YYYYMMDD')
AND evs.evs_estado = 1
AND fcp.fic_estado NOT IN (1, 2, 3, 4))
  #7 (permalink)  
Antiguo 14/05/2010, 16:53
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 9 años, 6 meses
Puntos: 1
Respuesta: Update Con Inner Join

Puedes Intentar... hacer primero la JUNTURA y despues SETEAS los valores?... intentalo, mientras busco otra solucion si en caso no funcionara...
  #8 (permalink)  
Antiguo 26/12/2011, 10:14
Avatar de gluckselig  
Fecha de Ingreso: diciembre-2011
Mensajes: 1
Antigüedad: 6 años
Puntos: 0
Respuesta: Update Con Inner Join

tengo este query y no se donde esta el error, nesecito la respuesta super rapido, por favor ayuda!!!

UPDATE A set A.naturaleza=B.naturaleza, A.cedula=(SELECT
SUBSTRING_INDEX (SUBSTR (B.rif,3,LENGTH(B.rif)),'-',1)*1),
A.tipo=B.tipo, A.tipo_naturaleza=B.tipo_naturaleza, A.id_rif=B.id_rif,
A.nombre=B.nombre, A.apellido=B.apellido, A.razon_social=B.razon_social,
A.catastro= CONCAT(B.parroquia, "-",B.ud,"-",B.u_b_s,"-",B.manzana), A.direccion=B.direccion,
A.tlf_ofic=B.telefono, A.email=B.email, A.inactivo=B.inactivo, A.capital=B.capital
from juridicos_1 as B inner join contribuyentes as A on B.id_sim=A.id_sim
  #9 (permalink)  
Antiguo 11/01/2012, 09:16
 
Fecha de Ingreso: enero-2012
Mensajes: 1
Antigüedad: 5 años, 11 meses
Puntos: 0
Respuesta: Update Con Inner Join

Cita:
Iniciado por gluckselig Ver Mensaje
tengo este query y no se donde esta el error, nesecito la respuesta super rapido, por favor ayuda!!!

UPDATE A set A.naturaleza=B.naturaleza, A.cedula=(SELECT
SUBSTRING_INDEX (SUBSTR (B.rif,3,LENGTH(B.rif)),'-',1)*1),
A.tipo=B.tipo, A.tipo_naturaleza=B.tipo_naturaleza, A.id_rif=B.id_rif,
A.nombre=B.nombre, A.apellido=B.apellido, A.razon_social=B.razon_social,
A.catastro= CONCAT(B.parroquia, "-",B.ud,"-",B.u_b_s,"-",B.manzana), A.direccion=B.direccion,
A.tlf_ofic=B.telefono, A.email=B.email, A.inactivo=B.inactivo, A.capital=B.capital
from juridicos_1 as B inner join contribuyentes as A on B.id_sim=A.id_sim
primero debes revisar que el SELECT para la asignacion del campo cedula no te este devolviendo mas de un valor, pq si lo hace, eso si seria un error. y con respecto al join, no entiendo la necesidad de hacerlo, si lo que deseas es utilizar un tabla para condicionar la actualizacion, tambien lo puedes hacer validando el campo de la tabla de la actualizacion con una condicion combinada con un select de la tabla que no vas a actualizar. me explico:

update set tabla1 .... where tabla1.id <> all (select id from tabla2)(oracle).

por cierto que manejador de bd es?

espero que no sea muy tarde :)

Última edición por wilfredodiazbarrios; 11/01/2012 a las 11:37
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:36.