---
title: "Cláusula JOIN"
url: https://docs.catalyst.zoho.com/es/cloud-scale/help/zcql/joins/
description: "ZCQL es el lenguaje de consulta propio de Catalyst, inspirado en lenguajes de consulta conocidos, que puedes utilizar para consultar la base de datos de tu aplicación de manera eficiente."
last_updated: 2026-03-20T16:21:56Z
service: Cloud Scale
type: general
---
# Cláusula JOIN
### Introducción
La cláusula `JOIN` se utiliza para combinar filas de dos o más tablas en una consulta `SELECT`, basándose en una columna relacionada entre ellas. Las filas de todas las tablas se generan juntas con la columna común fusionada.
Antes de aprender más sobre la cláusula `JOIN`, comprendamos algunos términos clave relacionados con los joins:
1. **Clave primaria:** Una clave primaria es un identificador único de un registro en una tabla. Una tabla puede tener una columna como columna de clave primaria, y el valor de cada registro en esta columna debe ser único, es obligatorio y no puede duplicarse.
2. **Clave foránea**: Una columna de clave foránea en una tabla identifica de manera única una fila en otra tabla o en la misma tabla. La clave foránea de la segunda tabla hace referencia a la clave primaria de la primera tabla.
3. **Tabla padre**: En la cláusula `JOIN`, la tabla padre es la tabla base sobre la cual se realiza el join.
4. **Tabla de unión**: La tabla de unión es la tabla secundaria o la tabla hija que se fusiona con la tabla padre en la cláusula `JOIN`.
> **Nota:** Los joins entre dos tablas solo son posibles si existe una relación entre ellas. Una de las tablas debe hacer referencia a la columna de clave primaria de la otra tabla, por lo que la tabla de unión debe tener una columna de clave foránea de la tabla padre, o la tabla padre debe tener una columna de clave foránea de la tabla de unión.
En nuestro ejemplo, la columna _MovieID_ es la clave primaria de la tabla _Movies_ ya que contiene el número de identificación único de una película.
**Base de datos de ejemplo:**
Creemos una tabla llamada "Theaters" en la aplicación de reserva de entradas que especifica las ubicaciones de todos los cines registrados en la aplicación.
A continuación se muestran registros de ejemplo de la tabla **Theaters**:
| TheaterID |
TheaterName |
Location |
| 047 |
The Express Cinemas |
New York City |
| 048 |
ANC Cinemas |
Rochester |
| 052 |
Cosmos Theater |
Albany |
| 053 |
FunTime Cinemas |
Buffalo |
La columna _TheaterID_ es la clave primaria de la tabla _Theaters_ ya que contiene los números de identificación únicos de los cines. La columna _TheaterID_ en la tabla _Movies_ es la clave foránea de la columna _TheaterID_ en la tabla _Theaters_.
> **Nota:** Cuando usas una cláusula `JOIN`, debes especificar los nombres de las columnas y sus nombres de tabla para cada columna en la consulta como: **'_table\_name.column\_name_'**'. Por ejemplo: '_Movies.MovieName_', '_Theaters.Location_'
Si no especificas el nombre de la tabla junto con el nombre de la columna en una consulta, por defecto se considera que es una columna en la tabla base.
### Tipos de Joins
Existen dos tipos de Joins que se pueden realizar en ZCQL.
#### INNER JOIN
El `INNER JOIN` devuelve los registros que tienen valores coincidentes tanto en la tabla padre como en la tabla de unión. Cuando usas un inner join en dos tablas, solo se producen como salida los registros cuyos valores coinciden para las columnas especificadas en ambas tablas.
La sintaxis para usar un `INNER JOIN` es:
```sql
SELECT column_name(s)
FROM parent_table_name
INNER JOIN join_table_name
ON parent_table_name.column_name = join_table_name.column_name
```
**Ejemplo:**
Para ver una lista de los nombres de películas, fechas de proyección y horarios de la tabla _Movies_ junto con los nombres de los cines de la tabla _Theaters_, ejecuta la siguiente consulta:
```sql
SELECT Movies.MovieName, Theatres.TheaterName, Movies.ShowDate, Movies.ShowTime,
FROM Movies INNER JOIN Theatres ON Movies.TheaterID = Theatres.TheaterID
```
Esto generará la siguiente salida:
| MovieName |
TheaterName |
ShowDate |
ShowTime |
| Ant-Man and the Wasp |
The Express Cinemas |
2018-07-13 |
13:30:00 |
| Hotel Transylvania 3: Summer Vacation |
Cosmos Theater |
2018-07-13 |
14:20:00 |
| The First Purge |
Cosmos Theater |
2018-07-14 |
17:00:00 |
| The First Purge |
FunTime Cinemas |
2018-07-14 |
21:30:00 |
#### LEFT JOIN
El `LEFT JOIN` devuelve todos los registros de la tabla padre y los registros coincidentes de la tabla de unión. Cuando usas un left join en dos tablas, se devuelven todos los registros de la tabla padre, incluso si no tienen coincidencias en la tabla de unión. El resultado se muestra como 'NULL' para los registros que no tienen coincidencia en la tabla de unión.
La sintaxis para usar un `LEFT JOIN` es:
```sql
SELECT column_name(s)
FROM parent_table_name
LEFT JOIN join_table_name
ON parent_table_name.column_name = join_table_name.column_name
```
**Ejemplo:**
Para ver una lista de cines y sus ubicaciones de la tabla _Theaters_ junto con las películas que se proyectan en los cines de la tabla _Movies_, ejecuta la siguiente consulta:
```sql
SELECT Theaters.TheaterName, Theaters.Location, Movies.MovieName
FROM Theaters
LEFT JOIN Movies
ON Theaters.TheaterID = Movies.TheaterID
```
Esto generará la siguiente salida:
| TheaterName |
Location |
MovieName |
| The Express Cinemas |
New York City |
The First Purge |
| ANC Cinemas |
Rochester |
NULL |
| Cosmos Theater |
Albany |
Hotel Transylvania 3: Summer Vacation |
| FunTime Cinemas |
Buffalo |
Skyscraper |
Dado que no hay registros coincidentes para ANC Cinemas en la tabla Movies, el resultado se muestra como 'NULL'.
### Joins múltiples
Puedes combinar un máximo de **cuatro** joins en una sola consulta ZCQL. Sin embargo, solo puedes escribir **una** condición `JOIN` para cada cláusula de join. Esto mostrará los resultados de cuatro tablas diferentes, donde una está vinculada a otra usando un `INNER JOIN` o un `LEFT JOIN`.
**Base de datos de ejemplo**:
Creemos una tabla llamada 'Pricing' en la aplicación de reserva de entradas que muestra el precio del boleto en dólares de una entrada individual para una película y un cine en particular. Esta tabla hace referencia a _TheaterID_ de la tabla _Theaters_ y _MovieID_ de la tabla _Movies_ como claves foráneas.
A continuación se muestran registros de ejemplo de la tabla **Pricing**:
| TheaterID |
MovieID |
Price |
| 047 |
2056 |
9.20 |
| 048 |
NULL |
NULL |
| 052 |
2057 |
8.64 |
| 052 |
2058 |
11.50 |
| 053 |
2059 |
7.44 |
Puedes ejecutar una consulta para mostrar el _TheaterName_ de la tabla _Theaters_, _MovieName_, _ShowDate_ y _ShowTime_ de la tabla _Movies_, y _Price_ de la tabla _Pricing_, ejecutando la siguiente consulta:
```sql
SELECT Theaters.TheaterName,Movies.MovieName, Movies.ShowDate,
Movies.ShowTime, Pricing.Price
FROM Pricing
LEFT JOIN Movies
ON Theaters.TheaterID = Movies.TheaterID
INNER JOIN Theaters
ON Movies.MovieID = Pricing.MovieID
```
Esto generará la siguiente salida:
| TheaterName |
MovieName |
ShowDate |
ShowTime |
Price |
| The Express Cinemas |
The First Purge |
2018-07-13 |
13:00:00 |
9.20 |
| ANC Cinemas |
NULL |
NULL |
NULL |
NULL |
| Cosmos Theater |
Ant-Man and the Wasp |
2018-07-13 |
14:20:00 |
8.64 |
| Cosmos Theater |
Hotel Transylvania 3: Summer Vacation |
2018-07-14 |
17:00:00 |
11.50 |
| FunTime Cinemas |
Skyscraper |
2018-07-14 |
21:30:00 |
7.44 |
> **Nota:**
* Para utilizar todas las funcionalidades de la cláusula `JOIN`, te recomendamos migrar tu código base de **ZCQL V1** a **ZCQL V2**.
* A partir del **1 de diciembre de 2024**, todos tus proyectos actuales en todas tus [organizaciones](https://docs.catalyst.zoho.com/es/getting-started/catalyst-organizations/) presentes en el [entorno de desarrollo](https://docs.catalyst.zoho.com/es/deployment-and-billing/environments/development-environment/) se mapearán automáticamente al **ZCQL V2 Parser**.
* A partir del **1 de abril de 2025**, todos los proyectos presentes en todas las *organizaciones* que ya hayan sido mapeados al **ZCQL V2 Parser** en el *entorno de desarrollo* se mapearán automáticamente al **ZCQL V2 Parser** en el [entorno de producción](https://docs.catalyst.zoho.com/es/deployment-and-billing/environments/production-environment/), si y cuando se habilite producción para el proyecto.
* Puedes obtener más información sobre las mejoras y funcionalidades de **ZCQL V2** en este [documento de ayuda](https://docs.catalyst.zoho.com/es/cloud-scale/help/zcql/syntax-exceptions/).