Francisco Javier Solis Martinez
Juan Diego Ussa Aponte
Cuando trabajas con bases de datos relacionales, llega un momento en que necesitas cruzar información entre tablas distintas. Ahí entra el operador JOIN en SQL, la herramienta más usada para combinar tablas a partir de un campo en común. Si estás aprendiendo a manejar PG Admin y quieres entender cómo unir datos de clientes con sus rentas, este recorrido te va a servir.
¿Qué es el operador JOIN y para qué sirve?
El JOIN te permite fusionar dos o más tablas que comparten al menos un campo en común, normalmente un ID. Es la forma más limpia de relacionar información dispersa en distintas tablas sin duplicar datos.
¿Qué es un JOIN en SQL? Es un operador que combina filas de dos tablas usando una columna que ambas comparten, como un customer_id. Sin esa coincidencia, el JOIN no funciona.
En el ejemplo que se trabaja en PG Admin, hay dos tablas clave: customer y rental. Ambas comparten el campo customer_id, y ese es el puente que permite cruzarlas.
¿Qué campos conviene usar para hacer un JOIN?
La regla práctica es simple: usa siempre los campos ID. Intentar emparejar por email o por apellido es un dolor de cabeza porque hay variaciones, errores y duplicados. En cambio, los IDs son únicos y consistentes.
Estos campos son los candidatos ideales para que tu JOIN devuelva resultados confiables.
¿Cómo escribir tu primer JOIN entre customer y rental?
La sintaxis básica selecciona columnas específicas de cada tabla y las une mediante el operador ON, que indica qué columnas deben coincidir.
La estructura sería así: seleccionas customer.first_name, customer.last_name y rental.rental_date, y luego unes customer con rental usando ON customer.customer_id = rental.customer_id. Al ejecutar con F5, el resultado muestra 16,000 registros que indican qué usuario, con nombre y apellido, hizo cada renta y en qué fecha.
Fíjate en algo importante: estás especificando primero la tabla y luego la columna (tabla.columna). Esto evita ambigüedades cuando dos tablas tienen columnas con el mismo nombre.
¿Por qué importa el orden de las tablas en un JOIN?
El orden establece la prioridad de la consulta. Si pones customer primero y luego rental, la query toma como referencia inicial los datos del cliente. Si inviertes el orden, la prioridad cambia y puedes obtener errores o resultados distintos.
¿El orden de las tablas afecta un JOIN? Sí, el orden define qué tabla manda la prioridad de la consulta. Si lo cambias sin ajustar el resto, vas a tener errores en tu query.
No te preocupes si al inicio se te olvida la secuencia. Es de las cosas más comunes al aprender SQL. Solo reordena los campos y la consulta volverá a funcionar.
¿Cuándo usar FULL JOIN en lugar de un JOIN simple?
Mientras el JOIN tradicional te muestra solo las coincidencias entre tablas, el FULL JOIN trae todos los registros de ambas tablas, hayan coincidido o no. Esto es útil cuando quieres ver la imagen completa, incluyendo huérfanos.
En el ejemplo, al cambiar a un FULL JOIN seleccionando solo customer.first_name y rental.rental_date, la consulta deja de filtrar y empieza a mostrar la unión integral de ambos conjuntos de datos.
¿Cómo entender un JOIN complejo con el botón EXPLAIN?
Cuando ya tienes varios JOINs encadenados y te pierdes, PG Admin tiene un atajo que vale oro: el botón E de EXPLAIN. Seleccionas el statement, presionas E, y obtienes un diagrama que te muestra:
Lo mejor es que esa explicación es exportable, así que puedes generar documentación visual de tus consultas. Es una herramienta brutal para depurar y para entender por qué una query se comporta de cierta forma.
La recomendación es práctica: crea muchas queries de este tipo y apóyate en EXPLAIN para descomponer cada diagrama. Con el tiempo vas a leer un JOIN sin necesidad de ayuda visual, pero mientras tanto, ese botón es tu mejor aliado.
¿Tú ya probaste hacer tu primer JOIN en PG Admin? Cuéntame en los comentarios qué tablas estás cruzando y si te ha funcionado el botón EXPLAIN para entender tus consultas.
Francisco Javier Solis Martinez
Juan Diego Ussa Aponte
JIMMY ALEXANDER CRUZ QUINTERO
Mariana Ardila Liscano
Mario Peña
Gabriel Obregón
Juan Diego Ussa Aponte
Juan Diego Ussa Aponte
Jilber Ronaldy Vicos Pajuelo
Luis Rodolfo Altuve Cáceres
Alvaro David Mora Sepúlveda
Edgar A. Gonzalez Ambriz
Emerson Cedeño
Sara Catalina Rojas Ramirez
Sandra Pérez Del Rosario
Ismael David Morales Insignares
Maria Alejandra Luna Tito
Maria Alejandra Luna Tito
Juan Acevedo
Ioannes Schroeder
MIchael Ramirez Mata
Leandro Gonzalez
# Un ejemplo para entender JOIN vs FULL JOIN Considera dos tablas, **A** y **B**: ### Tabla A: | A.id | A.value | |-------|---------| | 1 | Apple | | 2 | Banana | | 3 | Cherry | ### Tabla B: | B.id | B.color | |-------|---------| | 2 | Yellow | | 3 | Red | | 4 | Green | ## Aplicando JOIN (INNER JOIN) SELECT A.id, A.value, B.color FROM A JOIN B ON A.id = B.id; **Resultado:** | id | value | color | |----|--------|--------| | 2 | Banana | Yellow | | 3 | Cherry | Red | ## Ahora aplicando FULL JOIN (FULL OUTER JOIN) SELECT A.id, A.value, B.color FROM A FULL JOIN B ON A.id = B.id; **Resultado:** | id | value | color | |------|--------|--------| | 1 | Apple | NULL | | 2 | Banana | Yellow | | 3 | Cherry | Red | | NULL | NULL | Green | ## Resumen - Usa **JOIN** cuando quieres unir solo las filas que tienen coincidencias en ambas tablas. - Usa **FULL JOIN** cuando quieres obtener todas las filas de ambas tablas, incluyendo aquellas que no tienen coincidencias (rellenadas con `NULL` donde falte información).
Buena ejemplo, gracias
No es normal lo que dice el profesor sobre prioridades, cuando se hace un join sencillo como el que esta en el ejemplo no importa el orden de las tablas ni de las columnas que se muestran. En teoría de conjuntos, en una intersección de dos grupos 'A ∩ B' es igual a 'B ∩ A'.
Si, ahi se equivocó, yo la corri asi: select r.last_update,c.last_name from customer c inner join rental r on r.customer_id = c.custumer_id;
<u>Me gustaria una clase donde explique Nested Loop, Hash Join, Merge Join y como el optimizador de consultas de PostgreSQL</u>
📌 JOIN en SQL
🔑 Concepto Clave
✨ JOIN = unir información de diferentes tablas 🔗 Se basa en columnas compartidas (IDs) ⚠️ Requiere cuidado en:
🎯 ¿Qué campos usar en un JOIN?
✅ Usar siempre IDs (son únicos y confiables):
❌ Evitar campos variables (pueden no coincidir):
📝 Ejemplo Práctico
SELECT customer.first_name, customer.last_name, rental.rental_date
FROM customer
JOIN rental ON customer.customer_id = rental.customer_id;
🔍 Detalles:
🔄 Importancia del Orden
➡️ El orden de las tablas influye en el resultado. ⚠️ Cambiarlo puede:
⚖️ JOIN vs FULL JOIN
📌 Ejemplo de FULL JOIN:
SELECT customer.first_name, rental.rental_date
FROM customer
FULL JOIN rental ON customer.customer_id = rental.customer_id;
🛠️ Herramienta EXPLAIN
💡 EXPLAIN sirve para entender cómo SQL ejecuta un JOIN.
Te muestra:
👉 Ideal para visualizar y optimizar consultas
Para realizar abreviaciones en SQL al usar FROM y JOIN ON, simplemente asignas un alias a las tablas. Por ejemplo:
SELECT c.first_name, c.last_name, r.rental_date FROM customer AS c JOIN rental AS r ON c.customer_id = r.customer_id;
Aquí, customer se abrevia como c y rental como r. Usar alias simplifica las consultas y mejora la legibilidad. Recuerda que el uso de alias es especialmente útil cuando se manejan múltiples tablas en una consulta.
En SQL, existen varios tipos de uniones (JOIN) para combinar datos de diferentes tablas:
El tipo más útil depende del contexto: el INNER JOIN es el más común para obtener datos relacionados.
Entender los 4 Fantásticos (Tipos de JOIN)
Imagina dos círculos (Tabla A y Tabla B):
rental_date verás un NULL. (Es el más usado en reportes).confirmo 👍
En SQL Server cuando se trabaja con los JOINS entre tablas es transparente si se colocan las columnas comunes a las dos tablas en cualquier orden, pues las tablas calificando a las columnas es suficiente sin tener que establecer ningún tipo de prioridad. Algunas ventajas debe tener SQL Server con todo el dineral que cobran por su licenciamiento !, Jajajaja
habría que ver si tiene que ver algo la versión del postregres utilizado, él está usando la v14 yo he instalado la v17, hice el mismo ejercicio de reordenar las tablas en el FROM..JOIN, y no se me generó el error que se le mostró
Comparto mi aporte, tome el ejercicio de group by-having y le agregue el nombre.
Dejo mi aporte, realice unos ejercicios de esta clase
SELECT t.title, l.name FROM film AS t JOIN language AS l ON t.language_id = l.language_id
Para ver los cien clientes que han reseñado mal xD
SELECT c.first_name, c.last_name, r.rating, r.review_text FROM customer AS c JOIN review AS r ON c.customer_id = r.customer_id ORDER BY rating ASC LIMIT 100
Si tu escribes JOIN a secas (sin INNER. LEFT o RIGHT), PostgreSQL lo interpreta automáticamente como un INNER JOIN. Es decir, es el valor por defecto.
esto parece un curso de pgadmin ❌
Su error fue que selecciono una palabra y no la query, pero la query esta bien y no importa el order de las tablas para un inner join (join)!! Deberían darse cuenta de estos errores @admin
select customer.first_name, customer.last_name, rental.rental_date from rental join customer on customer.customer_id = rental.rental_id
Me confundió un poco el
JOIN
Y el
FULL JOIN
Y basicamente si se dan cuanta para hacer el join esto utiliza una condición y es que primero tengan un elemento en común esto para que ? para que me puedan mostrar la unión de estos solo si la condición se cumple, es decir si de la nada hay un customer_id diferente a el customer id de rental , no saldría esa información
Mi primer JOIN doble me emocionó mucho:
SELECT`` COUNTRY.COUNTRY, CITY.CITY, ``COUNT``(ADDRESS.CITY_ID) ``AS`` NUM_CUSTOMERS
FROM`` ADDRESS
JOIN ``CITY ON ADDRESS.CITY_ID = CITY.CITY_ID
JOIN`` COUNTRY ON CITY.COUNTRY_ID = COUNTRY.COUNTRY_ID
GROUP BY`` COUNTRY.COUNTRY, CITY.CITY_ID ``ORDER BY COUNT``(ADDRESS.CITY_ID) DESC;
Hola, me perdi con el JOIN y el FULL JOIN haciendo la prueba me salen exactamente los mismos datos. Me podrian por favor explicar cual es su diferencia. Gracias
INNER JOIN (o JOIN):
ON. FULL JOIN
NULL.LEFT JOIN y un RIGHT JOIN.