¿Cómo funciona Inner Join, Left Join, Right Join, y Full Join?

¿Cómo funciona Inner Join, Left Join, Right Join, y Full Join?

El lenguaje SQL sigue siendo el más usado para acceder a las bases de datos, por eso es vital que cualquier informático lo maneje de manera óptima.  En este artículo te explicaremos cómo y porqué usar la sentencia JOIN de una manera muy simple. Para empezar debes tener presente que JOIN es una de las operaciones más usadas e importantes en SQL, sin embargo puede ser difícil de entender al principio. Comencemos con su definición: JOIN es el proceso de tomar datos de varias tablas y colocarlos en una sola vista generada, en palabras mucho más simples con una secuencia  SQL JOIN logras combinar filas de dos o más tablas, en función de una columna relacionada entre ellas. 

Ahora bien, para que tengas una mejor idea de cómo funciona la secuencia JOIN debes tener primero claro la “Teoría de conjuntos” y así todo te resultará más fácil. A continuación te mostraremos un grafico explicando cómo se comportan los cuatro principales JOIN (INNER, LEFT, RIGHH Y FULL JOIN), según la Teoría de conjuntos y

Dba-Experts-JOIN

luego ya pasaremos a explicar uno por uno:

Dba-Experts-JOIN2

  • INNER JOIN: Es el JOIN  más usado, esta es la instrucción que devuelve únicamente aquellos registros o filas que tiene valores idénticos en las dos tablas. 

Su sintaxis es: 

  • SELECT nombreColumna(s)
  • FROM tabla1
  • INNER JOIN tabla2
  • ON tabla1.nombreColumna=table2.nombreColumna;

Ejemplo: Veremos cómo se ejecuta está sentencia con clientes y Pedidos:

TABLA 1 – CLIENTES

ID CLIENTE NOMBRE TELÉFONO
1 Andrea Palacios 437 58 96
2 Claudia Mena 579 12 45
3 Lina Gonzales 678 15 46
4 Sara Rojas 248 46 53
5 Valery Cuellar 496 59 45

 

TABLA 2 – PEDIDOS

ID PEDIDO  CLIENTE FECHA
125 3 22/06/2020
126 2 22/06/2020
127 4 23/06/2020
128 3 24/06/2020
129 2 26/06/2020

 

La sentencia SQL devolverá todos los clientes que realizaron algún pedido: 

  • SELECT Clientes.NombreCliente, Pedidos.PedidoID FROM Clientes
  • INNER JOIN Pedidos ON Clientes.ClienteID=Pedidos.ClienteID
  • ORDER BY Clientes.NombreCliente;

 

TABLA RESULTADO

CLIENTE PEDIDO
Claudia Mena 126
Claudia Mena 129
Lina Gonzales 125
Lina Gonzales 128
Sara Rojas 127

 

La tabla anterior fue el resultado que nuestra secuencia INNER JOIN nos arrojó, en ella podemos ver relacionados los clientes que realizaron algún pedido, tanto Claudia como Lina aparecen dos veces porque realizaron dos pedidos en días diferentes. Por otra parte vemos que Valery y Andrea no realizaron ningún pedido por eso no aparecen en nuestro resultado. 

LEFT JOIN: Se conoce como una combinación externa. En ella se obtienen todas las filas de la tabla izquierda, aunque no tengan correspondencia con la tabla de la derecha. Además también mostrará los registros que coinciden con la tabla de la derecha. Hay que tener presente que si existen valores en la tabla izquierda pero no en la tabla derecha, ésta mostrará “NULL”.

Su sintaxis es: 

  • SELECT nombreColumna(s)
  • FROM tabla1
  • LEFT JOIN tabla2
  • ON tabla1.nombreColumna=tabla2.nombreColumna;

Ejemplo: Ahora realizaremos la secuencia para mostrar a todos los clientes y los pedidos que han realizado

  • SELECT Clientes.NombreCliente, Pedidos.PedidoID
  • FROM Clientes LEFT JOIN Pedidos
  • ON Clientes.ClienteID=Pedidos.ClienteID
  • ORDER BY Clientes.NombreCliente;

 

TABLA RESULTADO

CLIENTE PEDIDO
Andrea Palacios Null
Claudia Mena 126
Claudia Mena 129
Lina Gonzales 125
Lina Gonzales 128
Sara Rojas 127
Valery Cuellar Null

 

En está tabla de resultado vemos que se muestran todas las filas de la tabla Clientes, que es la tabla de la izquierda, tantas veces como haya coincidencias con el lado derecho. Tanto Andrea como Valery no han realizado ningún pedido, por lo que se muestra Null. 

RIGHT JOIN: Esta secuencia es todo lo contrario a la anterior, en ella se obtienen todas las filas de la tabla de la derecha, aunque no tengan correspondencia con la tabla de la izquierda. Además también mostrará los registros que coinciden con la tabla izquierda.

Su sintaxis es: 

  • SELECT nombreColumna(s)
  • FROM tabla1
  • RIGHT JOIN tabla2
  • ON tabla1.nombreColumna=tabla2.nombreColumna;

Ejemplo: Mostraremos la secuencia usando las mismas tablas de clientes y pedidos, pero ahora van aparecer los pedidos y los nombres de los clientes que los han realizado. 

  • SELECT Pedidos.PedidoID, Clientes.NombreCliente
  • FROM Clientes RIGHT JOIN Pedidos
  • ON Clientes.ClienteID=Pedidos.ClienteID
  • ORDER BY Pedidos.PedidoID;

 

TABLA RESULTADO

PEDIDO CLIENTE
125 Lina Gonzales
126 Claudia Mena
127 Sara Rojas
128 Lina Gonzales
129 Claudia Mena

 

FULL JOIN: Esta secuencia combina las dos anteriores, devuelve todos los registros de las tablas de la izquierda (tabla 1) y la derecha (tabla 2). En los resultados en que no haya coincidencia también aparecerá “Null”.

Su sintaxis es: 

  • SELECT nombreColumna(s)
  • FROM tabla1
  • OUTER JOIN tabla2
  • ON tabla1.nombreColumna=tabla2.nombreColumna;

Ejemplo: Con la siguiente secuencia obtendremos todas las filas de las tablas de clientes y pedidos, si en caso dado algún cliente no tuviera pedido, aparecerá “Null”. 

  • SELECT Clientes.NombreCliente, Pedidos.PedidoID
  • FROM Clientes OUTER JOIN Pedidos
  • ON Clientes.ClienteID=Pedidos.ClienteID
  • ORDER BY Clientes.NombreCliente;

 

TABLA RESULTADO

ID CLIENTE NOMBRE TELEFONO ID PEDIDO FECHA
1 Andrea Palacios 437 58 96 NULL NULL
2 Claudia Mena 579 12 45 126 22/06/2020
2 Claudia Mena 579 12 45 129 26/06/2020
3 Lina Gonzales 678 15 46 125 22/06/2020
3 Lina Gonzales 678 15 46 128 24/06/2020
4 Sara Rojas 248 46 53 127 23/06/2020
5 Valery Cuellar 496 59 45 NULL NULL

 

Como pudimos ver, utilizar las secuencias de JOIN (INNER, LEFT, RICH Y FULL JOIN), es muy sencillo, solo necesitas práctica. 

cerrar

代做工资流水公司吉林签证流水海口个人工资流水 开具合肥房贷流水模板个人工资流水绵阳工资流水单代做咸阳入职银行流水公司贵阳代开流水石家庄贷款流水办理宿迁工资流水app截图费用咸阳签证流水办理衡阳薪资流水单打印泉州个人银行流水样本潍坊代办银行流水单荆州企业对公流水制作徐州日常消费流水查询开背调工资流水无锡银行流水单办理泰安银行流水账单代开咸阳房贷流水代办杭州查询个人流水绍兴打印对公银行流水宁德流水单费用大庆购房银行流水江门做车贷工资流水贵阳代做银行流水电子版石家庄公司流水报价合肥代办自存流水济宁离职证明办理柳州转账流水图片徐州消费贷流水公司香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化