Aviso:

Para brindarle información de soporte completa de manera más rápida, el contenido de esta página ha sido traducido al español mediante traducción automática. Para consultar la información de soporte más precisa, consulte la versión en inglés de este contenido.

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:

copy
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:

copy
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:

copy
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:

copy
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:

copy
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 presentes en el entorno de desarrollo 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, 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.

Última actualización 2026-03-20 21:51:56 +0530 IST