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:
- 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.
- 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.
- Tabla padre: En la cláusula JOIN, la tabla padre es la tabla base sobre la cual se realiza el join.
- 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.
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.
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:
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:
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:
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:
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:
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 |
-
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
Yes
No
Send your feedback to us