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

Diferencias join,inner join,left join,right join.

Estas en el tema de Diferencias join,inner join,left join,right join. en el foro de Oracle en Foros del Web. Hola como estan, no entiendo lo siguiente: Segun encontre en este foro, los siguientes 2 selects son lo mismo: select * from persona, domicilio where ...
  #1 (permalink)  
Antiguo 15/08/2006, 22:59
 
Fecha de Ingreso: agosto-2006
Mensajes: 1
Antigüedad: 18 años, 3 meses
Puntos: 0
Diferencias join,inner join,left join,right join.

Hola como estan, no entiendo lo siguiente:

Segun encontre en este foro, los siguientes 2 selects son lo mismo:

select * from persona, domicilio where persona.idpersona = domicilio.idpersona
select * from persona inner join domicilio on persona.idpersona = domicilio.idpersona

pero que significa que se le quite el inner como sigue:

select * from persona join domicilio on persona.idpersona = domicilio.idpersona

ahora, que diferencia hay entre left join y left outer join , right join y right outer join, es decir, que se le quite el outer como sigue:

select * from persona left join domicilio on persona.idpersona = domicilio.idpersona
select * from persona left outer join domicilio on persona.idpersona = domicilio.idpersona

select * from persona right join domicilio on persona.idpersona = domicilio.idpersona
select * from persona right outer join domicilio on persona.idpersona = domicilio.idpersona

ahora, vi que se puede utilizar el simbolo (+) para realizar un left outer join o un right outer join como sigue:

select * from persona join domicilio on persona.idpersona(+) = domicilio.idpersona
select * from persona join domicilio on persona.idpersona = domicilio.idpersona (+)

pero en alguna ocacion me dijeron que realizar los joins con (+) ya no se usaba en versiones actuales de oracle, se esta dejando de usar???

Muchas gracias.
  #2 (permalink)  
Antiguo 25/08/2006, 17:28
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 8 meses
Puntos: 7
para empezar los comandos "left outer join " "right outer join " etc, no existen en oracle, se solucionan con los (+) dependiendo de tus tablas y tus datos, buscate informacion sobre (+)
__________________
Blogzote.com :-) Mi blog
  #3 (permalink)  
Antiguo 30/11/2006, 09:44
 
Fecha de Ingreso: noviembre-2006
Mensajes: 2
Antigüedad: 18 años
Puntos: 0
Cita:
Iniciado por kikolice Ver Mensaje
para empezar los comandos "left outer join " "right outer join " etc, no existen en oracle, se solucionan con los (+) dependiendo de tus tablas y tus datos, buscate informacion sobre (+)
Señor con todo el respeto le digo, está equivocado.
Los "comandos" LEFT JOIN, JOIN, LEFT OUTER JOIN, etc... sí existen en Oracle, a menos que te hayas quedado en la versión 8i de Oracle, ya que ellas aparecieron en la versión 9i. Pero este comentario fue hecho en el 2006, en donde ya está pleno funcionamiento la versión 10g.

No hay ninguna diferencia los OUTER y los INNER se colocan para claridad pero no afectan el funcionamiento de los JOIN.

--------------------------------------
La siguiente respuesta es incorrecta, y es rectificada más abajo (la dejo como testimonio del error).

Para contestar la pregunta del amigo forista. Le digo los LEFT OUTER JOIN a diferencia de los LEFT JOIN, también devuelven aquellos registros de la izquierda que no tienen igual en la tabla de la derecha.

Tabla_a Tabla_b
CampoU CampoDos
------- --------
a b
c c

SELECT CampoU
FROM Tabla_a LEFT OUTER JOIN Tabla_b ON CampoU = CampoDos

Retornará:
a
c

Última edición por roanbaga; 01/12/2006 a las 11:03
  #4 (permalink)  
Antiguo 30/11/2006, 10:12
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 8 meses
Puntos: 7
hasta donde llevo siempre uso (+) nunca use los "JOIN" supuse que aca en oracle no existian como si existen en mysql es posible tambien que como dicen

"pero en alguna ocacion me dijeron que realizar los joins con (+) ya no se usaba en versiones actuales de oracle, se esta dejando de usar???"

me voy a hechar un clavado a la documentacion, igual me hace falta actualizarme, gracias por la rectificacion
__________________
Blogzote.com :-) Mi blog
  #5 (permalink)  
Antiguo 01/12/2006, 11:01
 
Fecha de Ingreso: noviembre-2006
Mensajes: 2
Antigüedad: 18 años
Puntos: 0
Cita:
Iniciado por kikolice Ver Mensaje
hasta donde llevo siempre uso (+) nunca use los "JOIN" supuse que aca en oracle no existian como si existen en mysql es posible tambien que como dicen

"pero en alguna ocacion me dijeron que realizar los joins con (+) ya no se usaba en versiones actuales de oracle, se esta dejando de usar???"

me voy a hechar un clavado a la documentacion, igual me hace falta actualizarme, gracias por la rectificacion
Compañero kikolice, yo hago pruebas en Oracle 9i y puedo garantizarle que todavía está en funcionamiento el (+), pero sí, su uso es caduco con respecto a los JOIN.

Como se representa con la combinación de (+) un FULL OUTER JOIN, es decir que ambas tablas puedan no tener correspondencia en la otra.

Y también me toca corregir mi respuesta pasada, repasando los conceptos encontré que efectivamente, el LEFT JOIN es lo mismo que el OUTER, mejor dicho el uso es INNER o OUTER es solo por claridad, pero no cambia el funcionamiento de los JOIN.
  #6 (permalink)  
Antiguo 05/01/2007, 02:47
 
Fecha de Ingreso: enero-2007
Mensajes: 6
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Diferencias join,inner join,left join,right join.

Comparto la opinion del compañero....Inner join y Left Join se usan a partir de Oracle 9 en sustitución del (+). Aunque aun lo puedas utilizar.
  #7 (permalink)  
Antiguo 06/12/2007, 18:13
 
Fecha de Ingreso: diciembre-2007
Mensajes: 1
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Diferencias join,inner join,left join,right join.

Nesecito su ayuda por favor.
leyendo la informacion de todos aqui presentes, entonces...

tengo que hacer una consulta desde vbasic a una base de datos oracle 8.1
Pero uso el inner join y no me funciona
Estoy tratando de hacer una consulta con 1 tabla primaria y 3 secundarias

en ese caso que deberia usar en vez de inner join ???? y si uso el (+) como podria hacerlo ???

si me podrian ayudar con algun ejemplo por favor.
gracias de antemano.

César...
  #8 (permalink)  
Antiguo 07/12/2007, 14:26
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 24 años, 1 mes
Puntos: 3
Re: Diferencias join,inner join,left join,right join.

hola, para el inner join, en 8i debes hacerlo con igualdades simplemente, como explican arriba:

select * from persona, domicilio where persona.idpersona = domicilio.idpersona (compatible en 8i)

igualito a
select * from persona inner join domicilio on persona.idpersona = domicilio.idpersona

saludos
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
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

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 18:17.