Oracle - join,inner join,left join,right join. Diferencias

 
Vista:

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

Publicado por Lorena Rojas (8 intervenciones) el 16/08/2006 06:49:25
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.
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

RE:join,inner join,left join,right join. Diferenci

Publicado por Rodolfo Reyes (445 intervenciones) el 16/08/2006 15:46:21
1) el (+) sigue siendo soportado en las nuevas versiones de Oracle.

2) Esto hace que puedas unir dos tablas y salga información de las dos tablas sin que existe información relacionada.

Por ejemplo, tienes un sistema de ventas. Y tienes una tabla de vendedores y una tabla donde se guardan las ventas.

Quieres ver en el mes de agosto, las ventas de todos los productos por vendedor.

select a.vendedor,b.producto,count(b.producto)
from vendedor a, ventas b
where a.vendedor = b.vendedor and
b.mes = 8
group by a.vendedor,b.producto
/

Lo anterior te sacaria los productos que vendio cada vendedor. Pero si quisieras que salieran todos los productos, incluyendo los que el no movio en ese mes, tendrias que utilizar (+)

select a.vendedor,b.producto,count(b.producto)
from vendedor a, ventas b
where a.vendedor = b.vendedor (+) and
b.mes = 8
group by a.vendedor,b.producto
/

En este listado saldrian todos los productos.
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

RE:join,inner join,left join,right join. Diferenci

Publicado por Lorena Rojas (1 intervención) el 16/08/2006 19:28:47
Ok muchas gracias, pero es lo mismo utilizar:

Un left join y un left outer join?, porque se puede suprimir el outer, lo mismo pasa con el right join y right outer join.

Gracias Rodolfo
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

RE:join,inner join,left join,right join. Diferenci

Publicado por Rodolfo Reyes (445 intervenciones) el 16/08/2006 20:27:08
Sinceramente solo he utilizao los Outer Joins los cuales son equivalentes ha (+). Sinceramente no recuedo cual es el funcionamiento de los otros tipos de JOINS:

-Equijoins
-Self Joins
-Inner Joins
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

RE:join,inner join,left join,right join. Diferenci

Publicado por Juan Pablo Ceballos (1 intervención) el 22/10/2007 06:55:46
INNER JOIN: Presenta sólo lo que coincide en ambas tablas.

LEFT JOIN: Presenta todos los datos de la tabla a la izquierda del Join, aunque no coincidan con la tabla a la derecha.

RIGHT JOIN: Presenta todos los datos de la tabla a la derecha del Join, aunque no coincidan con la tabla a la izquierda.
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

RE:join,inner join,left join,right join. Diferenci

Publicado por Juan Pablo Ceballos (2 intervenciones) el 22/10/2007 06:56:02
INNER JOIN: Presenta sólo lo que coincide en ambas tablas.

LEFT JOIN: Presenta todos los datos de la tabla a la izquierda del Join, aunque no coincidan con la tabla a la derecha.

RIGHT JOIN: Presenta todos los datos de la tabla a la derecha del Join, aunque no coincidan con la tabla a la izquierda.
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

RE:join,inner join,left join,right join. Diferenci

Publicado por Juan Pablo Ceballos (2 intervenciones) el 22/10/2007 06:56:14
INNER JOIN: Presenta sólo lo que coincide en ambas tablas.

LEFT JOIN: Presenta todos los datos de la tabla a la izquierda del Join, aunque no coincidan con la tabla a la derecha.

RIGHT JOIN: Presenta todos los datos de la tabla a la derecha del Join, aunque no coincidan con la tabla a la izquierda.
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

RE:join,inner join,left join,right join. Diferenci

Publicado por kristina (1 intervención) el 26/03/2007 13:19:20
hola, lore tu eres mas buena lore-The best
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