# JOIN en SQL

> La instrucción de SQL que combina filas de dos tablas que comparten un valor.

- Nivel: Intermedio
- Temas: Datos
- URL: https://tidbit.legios.com.ar/es/sql-join/
- En inglés: [SQL JOIN](https://tidbit.legios.com.ar/sql-join/)

Un **JOIN** es la forma en que SQL junta datos que viven en tablas separadas. Una tienda guarda los clientes en una tabla y los pedidos en otra, unidos por un ID de cliente. Para ver cada pedido al lado del nombre del cliente escribís `SELECT … FROM pedidos JOIN clientes ON pedidos.cliente_id = clientes.id`, y la base empareja cada pedido con su cliente.

Hay varios tipos, y la diferencia está en qué pasa con las filas que no encuentran pareja. Un **INNER JOIN** se queda solo con los pares que coinciden: clientes que tienen pedidos. Un **LEFT JOIN** conserva todas las filas de la primera tabla y deja huecos donde la segunda no tiene nada, que es como encontrás a los clientes que nunca compraron. RIGHT y FULL OUTER JOIN son el espejo y la versión de ambos lados.

Los joins son la razón por la que las bases relacionales separan los datos en tablas: guardás cada dato una sola vez y combinás cuando lo necesitás. También son una fuente clásica de errores. Si unís por la columna equivocada, o por una que se repite, las filas se multiplican sin avisar y un total de ventas te da el doble. Contar filas antes y después de un join es un buen hábito.

## Una analogía

Como cruzar la lista de invitados con el plano de mesas por nombre: un inner join muestra solo a quienes tienen lugar asignado, un left join muestra a todos y marca quién todavía espera silla.

## Para quedarse

- Combina filas de dos tablas usando una columna compartida, indicada en la cláusula ON.
- INNER JOIN se queda solo con las coincidencias; LEFT JOIN conserva todas las filas de la primera tabla.
- Unir por una columna con valores repetidos puede multiplicar filas e inflar los totales.
- La mayoría de los modelos de datos usan claves primarias y foráneas para que los joins sean confiables.

## Para seguir leyendo

- [Sentencia JOIN en SQL (Wikipedia)](https://es.wikipedia.org/wiki/Join)
- [Joins entre tablas (tutorial de PostgreSQL, en inglés)](https://www.postgresql.org/docs/current/tutorial-join.html)

## Términos relacionados

- [SQL](https://tidbit.legios.com.ar/es/sql/): El lenguaje para hacerle preguntas a una base de datos.
- [Claves primarias y foráneas](https://tidbit.legios.com.ar/es/primary-and-foreign-keys/): La clave primaria identifica cada fila; la foránea apunta a una fila de otra tabla.
