Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
13 Hrs
3 Min
58 Seg
Curso de SQL y MySQL 2018

Curso de SQL y MySQL 2018

Alberto Alcocer (Beco)

Alberto Alcocer (Beco)

Tipos de JOIN

18/24

Reading

In the previous class we were talking about two types of joins that we can use when we are working with queries to our databases.

...

Register or login to read the rest of the content.

Contributions 126

Questions 5

Sort by:

Want to see more contributions, questions and answers from the community?

Respecto a “FULL OUTER JOIN”, esta sintaxis no es soportada por MySQL y arroja el Error 1046.
Para obtener un “FULL OUTER JOIN”, se pueden unir un “LEFT JOIN” y un “RIGHT JOIN” usando la palabra clave “UNION”.
Por ejemplo, la siguiente consulta muestra los autores sin libros (LEFT JOIN) y los libros sin autores (RIGHT JOIN), obteniendo los mismos resultados que un “FULL OUTER JOIN”:

SELECT *
FROM authors as a
LEFT JOIN books as b 
	ON a.author_id = b.author_id
WHERE b.author_id IS NULL
UNION
SELECT *
FROM authors as a
RIGHT JOIN books as b 
	ON a.author_id = b.author_id
WHERE a.author_id IS NULL;

Les dejo una imagen resumen.
Puede que a alguien le resulte util.

Aqui dejo un cuadro que podría ser útil:

JOINS con books como A y authors como B
Inner Join
196 Rows en intersección A con B

SELECT b.title, a.name FROM books as b INNER JOIN authors as a ON a.author_id=b.author_id;

Left Join
197 Rows un Elemento en el conjunto A que no esta en A intersección B

SELECT b.title, a.name FROM books as b LEFT JOIN authors as a ON a.author_id=b.author_id;

Right Join
198 Rows 2 elementos en el conjunto B que no esta en B intersección A

SELECT b.title, a.name FROM books as b RIGHT JOIN authors as a ON a.author_id=b.author_id;

Outer Join
198 rows en total

SELECT b.title,a.name FROM books AS b LEFT OUTER JOIN authors AS a ON b.author_id = a.author_id  UNION SELECT b.title,a.name FROM books AS b RIGHT OUTER JOIN  authors AS a ON b.author_id = a.author_id 

Left excluding join
1 Row en el conjunto A

SELECT b.title, a.name FROM books as b LEFT JOIN authors as a ON a.author_id=b.author_id WHERE a.author_id IS NULL;```



Right excluding join
2 Row en el conjunto B

SELECT b.title, a.name FROM books as b RIGHT JOIN authors as a ON a.author_id=b.author_id WHERE b.author_id IS NULL;```



Outer excluding join
3 rows en A,B

SELECT b.title, a.name FROM books as b LEFT JOIN authors as a ON a.author_id=b.author_id WHERE a.author_id IS NULL UNION SELECT b.title, a.name FROM books as b RIGHT JOIN authors as a ON a.author_id=b.author_id WHERE b.author_id IS NULL;



En que casos usamos el LEFT JOIN? Básicamente es trabajar solo con la información de la tabla A? No me queda claro cual es su finalidad, igualmente para el RIGHT JOIN

¿A alguién le funcionó el FULL OUTER JOIN?, me aparece un error de Sintaxis en,

ON a.author_id = b.author_id;
    SELECT a.author_id, a.name, a.nationality, b.title
    FROM authors AS a 
    FULL OUTER JOIN books AS b
    ON a.author_id = b.author_id;

Como tengo XAMPP, el MySQL la conexión la hace mediante MariaDB 10.1.33, busqué info sobre esto pero nada

Para finalizar la seccion de los JOIN cree un query (con otro adentro, es decir un query anidado) que me devuelve una tabla con dos columnas:

  • La de la derecha se llama CANTIDAD_LIBROS_ESCRITOS y enumera cantidades.
  • La de la izquierda se llama CANTIDAD_AUTORES y nos muestra la cantidad de autores que han escrito la cantidad de libros que muestra la columna de la derecha.
SELECT COUNT(ID) AS CANTIDAD_AUTORES, CANTIDAD AS CANTIDAD_LIBROS_ESCRITOS
FROM (SELECT a.author_id AS ID, a.name AS NOMBRE, COUNT(b.book_id) AS CANTIDAD
FROM authors AS a
LEFT JOIN books AS b
ON a.author_id = b.author_id
GROUP BY a.author_id
ORDER BY a.author_id) AS TABLA_SECUNDARIA
GROUP BY CANTIDAD_LIBROS_ESCRITOS
ORDER BY CANTIDAD_LIBROS_ESCRITOS

Súper interesante y mucho más fácil de apreciar con los diagramas, gracias! Aunque me parece que el FULL OUTER JOIN no está soportado en algunas versiones de MySQL, por lo menos la que yos estoy usando, pero en este caso podemos simplemente hacer la suma de un LEFT JOIN y un RIGHT JOIN para obtener el mismo resultado.

Excelente explicación. También hay una clase de este tema en el curso de Fundamentos de Bases de Datos.

Excelente explicacion 😃

Hola, hay forma de descargar estos artículos, así sea en un notebook?

Oh perfecto, justo el tipo de “join” que buscaba, “outer excluding join” = “diferencia simetrica”. 😄

Jajaja justo lo que pensé, el éxito para tener buenos queries es hacer diagramas de venn, asi que a la hora de programar los query hoja y lápiz para poder dibujar los circulos

Excelente explicacion, con esto y el curso de Fundamentos de Bases de datos queda todo completamente claro.

😮Wow no sabia que existían tantos tipos de JOIN siempre había usado inner join, left join y muy pocas veces right join pero tratare de encontrar aplicaciones a los otros join a la hora de desarrollar

En el último Join, ¿hay diferencia en poner “ON A.pk = B.pk” con poner “ON A.Key = B.Key”?

JOIN y Matemáticas.

  • Los tipos de JOIN que podemos hacer son en realidad operaciones matemáticas que se aplican sobre conjuntos y estas operaciones básicas son las siguientes.

Existen otras operaciones como el complemento de un conjunto…

  • Por si tienen curiosidad aquí dejo su representación matemática:

FULL OUTER JOIN is not available for MySQL, you can use UNION instead.

SELECT a.author_id, a.name, a.nationality, b.title
FROM authors as a
LEFT JOIN books as b
ON b.author_id = a.author_id
WHERE a.author_id between 1 AND 10
UNION 
SELECT a.author_id, a.name, a.nationality, b.title
FROM authors as a
RIGHT JOIN books as b
ON b.author_id = a.author_id
WHERE a.author_id between 1 AND 10

Este es el mejor articulo que he visto donde explique detalladamente la unión de dos o más tablas con los JOIN

Solo una observación, corregir los espacios en el outer excluding join para las condiciones

Esta información, mas la del post @GOLLUM23
generaron un mejor contexto para mi entendimiento.

Excelente info!

Diagramas de Venn, la mejor herramienta!

valiosa información. Gracias.

¡Genial!

Este tipo de de majo de base datos es muy util cuando se quiere tomar decisiones y entender futuros comportamientos no solo de los servicios o productos, si no tambien en aspectos de comportamiento en un uturo en las personas,

solo como observación en la url que dejaron en la clase 15 (https://i.pinimg.com/474x/b0/3d/67/b03d6794fb787492bea0f41a8144a37d--business-intelligence-computer-science.jpg)

En Right Excluding join (sans I’intersection de A) esta escrito ( WHERE B.key IS NULL) debería ser de la intersección de la tabla A (WHERE A.key IS NULL) como indica en la clase 17

Saludos,

Diagramas de Venn, el mejor amigo de los data scientists.

muy buena explicación refrescando curso de fundamentos.

solo sabia 3 tipos de join, con esto aprendí bastenteee

Muy bien explicado.

La mejor explicación que he visto.

Excelente información.

buen informacion, muy buena lectura sobre los diferentes tipos de joins.

deberia estar descargable

Yo = 🤯

Muchas gracias por la informacion, aqui vemos que los diagramas de Venn son importantes

no se por que pero me gusto mucho esto

Una explicación muy completa y valiosa

CROSS JOIN:

Devuelve todas las combinaciones posibles de filas de las tablas izquierda y derecha.

SELECT 
    *
FROM
    books
        CROSS JOIN
    authors;

Left excluding join:

SELECT 
    a.author_id, a.name, a.nationality, b.book_id
FROM
    authors AS a
        LEFT JOIN
    books AS b ON b.author_id = a.author_id
WHERE
    b.book_id IS NULL
ORDER BY a.author_id;

Una forma de implementar el Outer excluding join

    SELECT a.author_id, a.name as author_name, 
    a.nationality as author_nationality, b.title as book_title  
    FROM 
        authors as a
        LEFT JOIN 
        books as b 
            ON a.author_id = b.author_id
        WHERE b.author_id IS NULL
UNION
    SELECT a.author_id, a.name as author_name, 
    a.nationality as author_nationality, b.title as book_title 
    FROM 
        authors as a
        RIGHT JOIN 
        books as b 
            ON a.author_id = b.author_id
        WHERE a.author_id IS NULL;

Una forma de implementar el full outer join

 SELECT a.author_id, a.name as author_name, 
    a.nationality as author_nationality, b.title as book_title  
    FROM 
        authors as a
        LEFT JOIN 
        books as b 
            ON a.author_id = b.author_id
        WHERE a.author_id between 1 and 5
UNION
    SELECT a.author_id, a.name as author_name, 
    a.nationality as author_nationality, b.title as book_title 
    FROM 
        authors as a
        RIGHT JOIN 
        books as b 
            ON a.author_id = b.author_id
        WHERE a.author_id IS NULL;

Excelente y oportuno aporte. Gracias

Este curso a pesar de sus años, es buenisimo! 👍✨

Hola a todos siguiendo la lectura así me quedaron los ejemplos de tipos de JOINS.

Profesor con el respeto que se merecen los demas profesores en Platzi, usted es uno de los mejores que hay!

SELECT <columna_1> , <columna_2>,  <columna_3> ... <columna_n> 
FROM Tabla_A A
INNER JOIN Tabla_B B
ON A.pk = B.pk

Aunque de esta manera corre sin ningún problema se nos explico una clase anterior es una buena practica para una lectura mas fácil de un tercero que no sea quien haya estructurado el código el poner el

AS

cuando se renombre la Tabla B

excelente!!!, estoy aprendiendo mucho!!

RECOMENDACIÓN: Estudiar temas básicos de teoría de conjuntos.

Excelente info. explicativa, gracias.

Con esto, me quedan mucho más claros los conceptos que vi en el anterior curso, muy buen complemento

Gracias por el material.

Genial

Excelentes imágenes ilustrativas sobre los diferentes JOINS. He visto malísimas explicaciones sobre cómo funcionan los JOINS en muchos cursos; éste curso ha sido el mejor que he tomado sobre SQL, específicamente, sobre lo básico de MySQL.

Muchas Gracias, solo conocia tres tipos de Join, pero me ha quedado bastante claro como operan y las variaciones que se tienen.

Me recuerda mucho a mi materia de “Mates computacionales” de la uni. 😦

muy bueno

Exelente informacion y muy util.

Outer excluding join Nuevo concepto…

Muy buenas explicaciones

Esta interesante implementar todos estos tipos de JOIN, solo hace falta practicar y experimentar

Excelente informacion

Excelente esta información nos deja muy claro el uso de los Joins

Que buen aporte !!!

Este texto me ayudo a comprender cositas que aun tenía pendientes de cursos anteriores.

Muchas gracias!

Me agrada mucho este curso, ademas estoy aprendiendo bien.

Excelente, no conocia varios de estos Join… ya toca es probarlos…

muy buen aporte… lo ire probando

Excelente curso

excelente profe

Excelente explicacion profe!

Excelente.

Esta genial ver una importante aplicación de las matemáticas en base de datos. Para los que saben teoría de conjuntos este tema se les facilitara mucho.

Muy bien explicado.

Excelente aporte, gracias.

Excelente! traído directo de los diagramas de Venn a la práctica.

Buen resumen de las formas posibles de hacer joins.

Que gran aporte de informacion… gracias

Son muy importantes y se utilizan en el diaria vivir de las consultas SQL relacionales.

Creo que es importante saber que o cual es a información que se quiere mostrar por ejemplo en la clase anterior vimos que con el INNER no mostraba el autor el cual no tenia libros registrados; Al aplicar el LEFT JOIN observamos como mostro al autor; pero en este caso nos llenaba el dato de cantidad de libros con null.

Muy practico e ilustrativa la información

Excelente!

¡Maravilloso!

Muy buen aporte me dejo mas claro el concepto.

Great!

Muy buena guia, gracias.

Excelente!!

Ha quedado muy claro, muchas gracias.

Muy explicativo, gracias

Muchas gracias!!

Gracias!

Hola, me gusta mucho la explicacion, pero el comando Full Outer Join no me funciona. Me arroja un error de sintex.
Se puede hacer con un UNION de un left y un right join, en el curso de “fundamentos de bases de datos” se explica como hacerlo

muy buena explicación

Me quedo mucho mas claro, gracias!!

Buena información, bien explicado

Excelente aporte para tener en cuenta!

Buena información para tener en cuenta!

Alguien podria explicarme la ultima consulta, me confunde ese FULL y en general como se escribio la consulta