Diferencias entre JOIN, LEFT JOIN y RIGHT JOIN

Suele ser muy común confundirse con las distintas combinaciones que se pueden realizar entre tablas, por ello vamos a aclarar las diferencias entre cada una.

Existen las combinaciones internas de tablas donde cada registro de la tabla A se combina con otro de la tabla B que cumpla las condiciones.
Ej: Obtener los empleados del departamento de recursos humanos:

select * from empleados a, departamentos b where a.id_departamento=b.id

Esta consulta anterior se podría haber expresado de forma explicíta así:

select * from empleados a inner join departamentos b on a.id_departamento=b.id

Este tipo de combinaciones de tabas suele ser la más utilizada, pero si por ejemplo queremos un listado de todos los empleados, que tengan o no departamento asignado, entonces debemos realizar lo que se llama una combinación externa.
Ej: Obtener todos los empleados tengan o no departamento asignado:

select * from empleados a left join departamentos b on a.id_departamento=b.id

De esta forma se realizada un outer join por la izquierda, es decir nos traemos todos los registros de la tabla izquierda tengan o no correspondencia con la tabla derecha. Por el lado contrario un right join hace lo mismo pero trayendo todos los registros de la tabla derecha tengan o no correspondencia con la de la izquierda. Aquellos registros sin correspondencia entren para el campo correspondiente un valor NULL, es decir si un empleado no tiene departamento, entonces su valor es null.

Los ejemplos que hemos visto hasta ahora se pueden aplicar en MySQL y otros compatibles, pero en Oracle para realizar los outer join se realizan así:

select * from empleados a, departamentos b where a.id_departamento(+)=b.id

Es decir se coloca el (+) en el lado que queramos (left o right).

En los left o right join se puede ademas aplicar otras condiciones.
Ej: Obtener los empleados de los departamentos que tengan hipoteca:

select * from empleados a left join departamentos b on a.id_departamento=b.id where a.hipoteca=1

Comentarios

Comentario de gonzalo - 06 de Agosto de 2012 - 14:44
genial, muchas gracias!
Comentario de Mary - 28 de Septiembre de 2012 - 15:17
explicación muy clara, gracias
Comentario de Guillermo - 13 de Enero de 2013 - 18:38
Por fin una explicación sencilla y didáctica. Muchas gracias
Comentario de kimeleto - 23 de Enero de 2013 - 11:56
Lo breve y bueno, dos veces bueno, muchas gracias por tu explicacion, me ha servido muy util para refrescar conceptos.
Comentario de Andrés - 28 de Enero de 2013 - 19:50
son conceptos fundamentales, sirve de mucho.
Comentario de Sendys - 01 de Febrero de 2013 - 17:57
Por fin una web que lo explica de forma clara. +1
Comentario de Carlitos - 08 de Febrero de 2013 - 20:29
Gracias muy buena explicacion
Comentario de dany - 13 de Marzo de 2013 - 13:02
Buena explicacion :)
Comentario de Mateo - 27 de Marzo de 2013 - 16:21
Gracias, tu explicación me sirvio de mucho!
Comentario de Ba3 - 09 de Abril de 2013 - 04:42
Excelente explicación. Agregado a marcadores ;)
Comentario de jose puga - 18 de Abril de 2013 - 10:13
muy buen post. sobre todo la claridad con la que lo explicas... gracias.
Comentario de VictorOlivares - 04 de Mayo de 2013 - 19:51
Excelente explicación simple y al punto!
Comentario de Julio Mayes - 07 de Mayo de 2013 - 09:56
Muchisimas Gracias! expiclacion mas clara que muchos textos de venta! :D
Comentario de Messi - 08 de Mayo de 2013 - 00:08
Muchas gracias, me sirvio bastante tu post....Gracias
Comentario de Manie - 21 de Junio de 2013 - 22:59
Muy buena explicación, te felicito!! gracias
Comentario de eli - 02 de Agosto de 2013 - 23:36
gracias me ayudo breve, concreto y entendible
Comentario de Jhonn - 25 de Septiembre de 2013 - 20:18
Muchísimas Gracias !!! Sigan aclarando dudas como estas, se les agradecería. :)
Comentario de Rodrigo - 02 de Octubre de 2013 - 03:19
Muchísimas gracias, nadie explicaba de una forma tan simple y tan claro!
Comentario de Priscila - 02 de Octubre de 2013 - 21:48
Gracias, me re sirvió! :)
Comentario de Jordi - 08 de Octubre de 2013 - 21:31
Las exlicaciones han sido muy interesantes. Pero llego a la siguiente conclusión: Si trabajo con grandes bases de datos con muchos conceptos que relacionar ( 15.000 - 20.000) el hecho de utilizar "LEFT JOIN" y que se tengan que cargar todos los datos de una de las bases de datos. Supondrá la utilizacion de mucha memoria y aumentará mucho la utilización de la CPU. Por lo que se relentizará el funcionamiento del ordenador. ¿ Es correcta esta apreciación? Y total para que despues los articulos NO relacionados queden como NULL.
Comentario de Raul - 31 de Octubre de 2013 - 22:55
Muy bn post, tendran algun enlace extra de soporte!!!
Comentario de jose luis - 26 de Noviembre de 2013 - 00:15
muchas gracias enserio muchas gracias que esto necesitaba para el laburo... salud!
Comentario de Windows - 16 de Diciembre de 2013 - 19:22
Buen aporte,sencillo y muy claro de explicar los JOINS
Comentario de cesar - 03 de Marzo de 2014 - 13:00
optima explicaciòn ;) gracias
Comentario de Gabriel Segura - 08 de Marzo de 2014 - 08:07
Muchas gracias, explicación concreta, puntual y útil. Gracias
Comentario de Sabid - 12 de Abril de 2014 - 20:47
Gracias primera siempre he tenido muchas dudas en este tema. Ahora entiendo como funionan JOIN
Comentario de Julio - 30 de Abril de 2014 - 23:54
Muchas gracias, explicacion sencilla, concisa y clara...asi se explica!!!
Comentario de Carlos - 21 de Junio de 2014 - 19:19
Muy bien explicado, claro y sencillo.
Comentario de Alejo - 15 de Julio de 2014 - 00:50
Muchas gracias por tu explicación al grano :)
Comentario de nexthor - 17 de Julio de 2014 - 19:12
estaba al borde del suicidio por no entender esto... muchas gracias por tomarse el tiempo y compartir conocimientos...
Comentario de asistecio - 04 de Agosto de 2014 - 21:38
gracias muy bien
Comentario de menchou - 13 de Agosto de 2014 - 03:16
Gracias por la publicación, fue de mucha ayuda.
Comentario de confundida - 02 de Septiembre de 2014 - 21:36
¡Excelente explicación y ejemplificación!
Comentario de SEE - 23 de Noviembre de 2014 - 04:57
Gracias me sirvió de mucho :D
Comentario de vientos - 19 de Diciembre de 2014 - 00:28
me quedó muy claro ese del (+) estuvo excelente no lo sabía. gracias por compartir el conocimiento
Comentario de Ing José Dúmar Jiménez Ruíz - 13 de Enero de 2015 - 14:21
Interesante post muy explicado llevaba mucho tiempo tratando de entender esa diferencia pero ahora si me quedó muy claro. Felicitaciones
Comentario de Rodolfo Cerrito - 18 de Enero de 2015 - 16:12
Mas claro ni el agua, gracias por el aporte.
Comentario de pepe - 26 de Enero de 2015 - 13:49
comentario breve, conciso y claro, muchas gracias.
Comentario de Gerardo - 19 de Febrero de 2015 - 23:42
Excelente aporte!! Gracias!!
Comentario de nan - 10 de Marzo de 2015 - 18:46
Excelente explicación, muchas gracias
Comentario de Dante - 20 de Abril de 2015 - 21:57
Excelente!! Me ayudará ahorita en el trabajo con lo que desarrollo
Comentario de Gustafa - 29 de Abril de 2015 - 18:02
Muy buena info. breve, clara y concisa gracias.
Comentario de dan - 04 de Mayo de 2015 - 17:03
Muchas gracias, me ha sido muy útil tu explicación.
Comentario de rissy - 27 de Julio de 2015 - 16:27
A buen programador, pocas palabras.
Comentario de Onipse - 30 de Septiembre de 2015 - 18:14
Gracias, excelente explicación.
Comentario de Daniel - 12 de Enero de 2016 - 19:53
Excelente
Comentario de Pablo Velilla - 09 de Febrero de 2016 - 21:50
Genialmente espectacular, es algo en realidad sencillo pero a veces se nos hace complicado entenderlo, muy buena explicación!!
Comentario de Gustavo - 16 de Febrero de 2016 - 17:01
Gracias sabia q se hacia asi pero el por que no lo sabia. saludos.
Comentario de Ramon - 04 de Abril de 2016 - 03:56
Buena explicacion, Gracias n.n
Comentario de Danilo - 07 de Abril de 2016 - 17:17
Excelente explicación, una de las mejores que he visto, practico y sencillo.
Comentario de Mario - 24 de Abril de 2016 - 21:42
muy util gracias
Comentario de Gus - 28 de Junio de 2016 - 15:59
Explicación sencilla y más que suficiente. Gracias.
Comentario de Eduardo - 11 de Agosto de 2016 - 23:32
Buenisimo
Comentario de Christian - 10 de Noviembre de 2016 - 15:31
Muy buena explicación, sencilla y breve pero muy entendible, mejor que otras definiciones que confunden
Comentario de Simon - 01 de Marzo de 2017 - 14:28
Excelente la forma en que has explicado el concepto del JOIN. Has sido muy claro y sencillo.
Comentario de Fredy - 18 de Mayo de 2017 - 04:31
Excelente y si colocas 2 tablas relacionadas con esos nombres imbatible...saludos
Comentario de Gustavo - 30 de Agosto de 2017 - 16:56
Muchas gracias!!! Muy buena explicación.
Ha habido un error en el envío
Comentario enviado. Será revisado por la moderación antes de ser publicado.

Deja tu comentario

Tu nombre:
Tu email:
Tu comentario:
Nuestra página web utiliza cookies propias y de terceros, para realizar el análisis de la navegación de los usuarios y así poder mejorar nuestros servicios. Si continúas navegando, consideramos que aceptas su uso. Puedes cambiar la configuración u obtener más información aquí