Saltar al contenido

INTERIOR, EXTERIOR, IZQUIERDA, DERECHA, CRUZ

Tipos de articulaciones

Cruz ÚNETE

Cross JOIN es una forma más simple de JOIN que hace coincidir cada fila de una tabla de base de datos con cada otro conjunto de filas.

Es decir, nos da una combinación de todas las filas de la primera tabla con todos los registros de la segunda tabla.

Supongamos que queremos obtener todos los registros de miembros frente a todos los registros de películas, podemos usar el script que se muestra a continuación para obtener los resultados deseados.

SELECT * FROM `movies` CROSS JOIN `members`

La ejecución del script anterior en un banco de trabajo MySQL nos da los siguientes resultados.

idtitle idfirst_namelast_namemovie_id
1ASSASSIN'S CREED: EMBERSAnimations1AdamSmith1
1ASSASSIN'S CREED: EMBERSAnimations2RaviKumar2
1ASSASSIN'S CREED: EMBERSAnimations3SusanDavidson5
1ASSASSIN'S CREED: EMBERSAnimations4JennyAdrianna8
1ASSASSIN'S CREED: EMBERSAnimations6LeePong10
2Real Steel(2012)Animations1AdamSmith1
2Real Steel(2012)Animations2RaviKumar2
2Real Steel(2012)Animations3SusanDavidson5
2Real Steel(2012)Animations4JennyAdrianna8
2Real Steel(2012)Animations6LeePong10
3Alvin and the ChipmunksAnimations1AdamSmith1
3Alvin and the ChipmunksAnimations2RaviKumar2
3Alvin and the ChipmunksAnimations3SusanDavidson5
3Alvin and the ChipmunksAnimations4JennyAdrianna8
3Alvin and the ChipmunksAnimations6LeePong10
4The Adventures of Tin TinAnimations1AdamSmith1
4The Adventures of Tin TinAnimations2RaviKumar2
4The Adventures of Tin TinAnimations3SusanDavidson5
4The Adventures of Tin TinAnimations4JennyAdrianna8
4The Adventures of Tin TinAnimations6LeePong10
5Safe (2012)Action1AdamSmith1
5Safe (2012)Action2RaviKumar2
5Safe (2012)Action3SusanDavidson5
5Safe (2012)Action4JennyAdrianna8
5Safe (2012)Action6LeePong10
6Safe House(2012)Action1AdamSmith1
6Safe House(2012)Action2RaviKumar2
6Safe House(2012)Action3SusanDavidson5
6Safe House(2012)Action4JennyAdrianna8
6Safe House(2012)Action6LeePong10
7GIA18+1AdamSmith1
7GIA18+2RaviKumar2
7GIA18+3SusanDavidson5
7GIA18+4JennyAdrianna8
7GIA18+6LeePong10
8Deadline(2009)18+1AdamSmith1
8Deadline(2009)18+2RaviKumar2
8Deadline(2009)18+3SusanDavidson5
8Deadline(2009)18+4JennyAdrianna8
8Deadline(2009)18+6LeePong10
9The Dirty Picture18+1AdamSmith1
9The Dirty Picture18+2RaviKumar2
9The Dirty Picture18+3SusanDavidson5
9The Dirty Picture18+4JennyAdrianna8
9The Dirty Picture18+6LeePong10
10Marley and meRomance1AdamSmith1
10Marley and meRomance2RaviKumar2
10Marley and meRomance3SusanDavidson5
10Marley and meRomance4JennyAdrianna8
10Marley and meRomance6LeePong10

UNIR INTERNAMENTE

El JOIN interno se usa para devolver filas de ambas tablas que satisfacen la condición dada.

Por ejemplo, desea obtener una lista de miembros que alquilan películas, así como títulos de películas en alquiler. Puede usar INNER JOIN para esto, que devuelve filas de ambas tablas que cumplen ciertas condiciones.

SELECT members.`first_name` , members.`last_name` , movies.`title`
FROM members ,movies
WHERE movies.`id` = members.`movie_id`

Ejecute el script anterior por favor

first_namelast_nametitle
AdamSmithASSASSIN'S CREED: EMBERS
RaviKumarReal Steel(2012)
SusanDavidsonSafe (2012)
JennyAdriannaDeadline(2009)
LeePongMarley and me

Tenga en cuenta que la secuencia de comandos de resultados anterior se puede escribir de la siguiente manera para lograr los mismos resultados.

SELECT A.`first_name` , A.`last_name` , B.`title`
FROM `members`AS A
INNER JOIN `movies` AS B
ON B.`id` = A.`movie_id`

UNIRSE externo

MySQL Outer JOINs devuelve todos los registros coincidentes de ambas tablas.

Puede detectar registros que no coinciden en la tabla adjunta. Él regresa NULO valores para registros de tabla combinados si no se encuentra ninguna coincidencia.

¿Suena confundido? Veamos un ejemplo –

ÚNETE A LA IZQUIERDA

Ahora suponga que desea obtener los títulos de cada película, así como los nombres de los miembros que las alquilan. Evidentemente, nadie alquila determinadas películas. Simplemente podemos usar ÚNETE A LA IZQUIERDA con el propósito.

LEFT JOIN devuelve todas las filas de la tabla de la izquierda incluso si no se encontraron filas coincidentes en la tabla de la derecha. Cuando no se encontraron coincidencias en la tabla de la derecha, se devuelve NULL.

SELECT A.`title` , B.`first_name` , B.`last_name`
FROM `movies` AS A
LEFT JOIN `members` AS B
ON B.`movie_id` = A.`id`

Cuando se ejecuta el script anterior en el banco de trabajo MySQL, puede ver que los campos de nombre de miembro que se encuentran en películas no alquiladas tienen valores NULL. Eso significa que ningún miembro que coincida encontró miembros para esa película en particular.

titlefirst_namelast_name
ASSASSIN'S CREED: EMBERSAdamSmith
Real Steel(2012)RaviKumar
Safe (2012)SusanDavidson
Deadline(2009)JennyAdrianna
Marley and meLeePong
Alvin and the ChipmunksNULLNULL
The Adventures of Tin TinNULLNULL
Safe House(2012)NULLNULL
GIANULLNULL
The Dirty PictureNULLNULL
Note: Null is returned for non-matching rows on right

EL CORRECTO

LEIN JOIN es claramente lo contrario de LEFT JOIN. La DERECHA devuelve todas las columnas de la tabla de la derecha incluso si no se encontraron filas coincidentes en la tabla de la izquierda. Cuando no se encontraron coincidencias en la tabla de la izquierda, se devuelve NULL.

En nuestro ejemplo, supongamos que tiene que alquilarles los nombres de los miembros y las películas. Ahora tenemos un nuevo miembro que aún no ha alquilado ninguna película.

SELECT  A.`first_name` , A.`last_name`, B.`title`
FROM `members` AS A
RIGHT JOIN `movies` AS B
ON B.`id` = A.`movie_id`

La ejecución del script anterior en un banco de trabajo MySQL da los siguientes resultados.

first_namelast_nametitle
AdamSmithASSASSIN'S CREED: EMBERS
RaviKumarReal Steel(2012)
SusanDavidsonSafe (2012)
JennyAdriannaDeadline(2009)
LeePongMarley and me
NULLNULLAlvin and the Chipmunks
NULLNULLThe Adventures of Tin Tin
NULLNULLSafe House(2012)
NULLNULLGIA
NULLNULLThe Dirty Picture
Note: Null is returned for non-matching rows on left

Cláusulas «ON» y «USE»

En los ejemplos anteriores de una pregunta, usamos una cláusula ON para hacer coincidir los registros entre la tabla.

Se puede utilizar una cláusula USE para el mismo propósito. La diferencia con USAR un ea las columnas coincidentes deben tener nombres idénticos en ambas tablas.

En la tabla «películas» hasta ahora hemos utilizado su clave principal con el nombre «id». Hicimos referencia a esto en una tabla de «miembros» con el nombre «movie_id».

Cambiemos el nombre de las tablas de «película» al campo «id» llamado «movie_id». Hacemos esto para que tengamos nombres de campo coincidentes idénticos.

ALTER TABLE `movies` CHANGE `id` `movie_id` INT( 11 ) NOT NULL AUTO_INCREMENT;

Entonces usemos el ejemplo LEFT JOIN anterior.

SELECT A.`title` , B.`first_name` , B.`last_name`
FROM `movies` AS A
LEFT JOIN `members` AS B
USING ( `movie_id` )

En lugar de usar Arkansas y UTILIZAR con JOINs puede utilizar muchas otras cláusulas de MySQL como GRUPO EN, LUGAR e incluso funciona como SUMA, AVGetc.

¿Por qué deberíamos usar porros?

Ahora puede que te preguntes por qué usamos JOINs cuando podemos hacer la misma tarea ejecutando preguntas. Especialmente si tienes algo de experiencia en programación de bases de datos sabes que podemos ejecutar consultas una a una, usa la salida de cada una de ellas en consultas sucesivas. Por supuesto, eso es posible. Usando JOINs, puede hacer el trabajo usando una sola consulta con cualquier parámetro de búsqueda. Por otro lado MySQL puede lograr un mejor rendimiento con JOIN, ya que puede usar Indexing. Solo es necesario reducir los gastos generales del servidor si se utiliza una sola consulta JOIN cuando se ejecutan varias consultas. El uso de múltiples consultas en su lugar conduce a más transferencias de datos entre MySQL y aplicaciones (software). Además, también requiere más manipulaciones de datos al final de la aplicación.

Claramente podemos lograr mejores demostraciones de aplicaciones y MySQL usando JOINs.

Resumen

  • JOINS nos permite combinar datos de más de una tabla en un solo conjunto de resultados.
  • JOINS tiene un mejor rendimiento en comparación con las subpreguntas
  • INNER JOINS solo devuelve filas que cumplen los criterios dados.
  • OUTER JOINS también puede devolver filas cuando no se encontraron coincidencias. Las filas no coincidentes se devuelven con la palabra clave NULL.
  • Los principales tipos de JOIN incluyen Inner, Outer Left, Outer Right, Cross JOINS, etc.
  • «ON» es la cláusula que se utiliza a menudo en las operaciones JOIN. Una cláusula «USE» requiere que las columnas coincidentes tengan el mismo nombre.
  • JOINS también se puede utilizar en otras cláusulas como GROUP BY, WHERE, SUB QUERIES, AGREE FUNCTIONS, etc.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *