Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

No se puede usar FULL JOIN en MySQL

En las diapositivas mostradas al principio, el ingeniero Álvaro explica que podemos usar FULL JOIN pero descubrí que no funciona en MySQL.
Una alternativa al ejemplo explicado en clase es usar usar RIGHT JOIN y LEFT JOIN junto con UNION:

SELECT 
    A.NOMBRE, 
    B.HOBBY 
FROM 
    PERSONAS A
RIGHT JOIN
    HOBBIES B
ON 
    A.ID_PERSONA = B.ID_PERSONA
UNION
SELECT 
    A.NOMBRE, 
    B.HOBBY 
FROM 
    PERSONAS A
LEFT JOIN
    HOBBIES B
ON 
    A.ID_PERSONA = B.ID_PERSONA;

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

NOTA: Adjunto los comandos necesarios para crear la base de datos junto con sus tablas para poder ejecutar la consulta anterior:

CREATE SCHEMA ALURA_JOINS;

USE ALURA_JOINS;

CREATE TABLE PERSONAS(
    ID_PERSONA INT UNSIGNED,
    NOMBRE VARCHAR(50)
);

INSERT INTO PERSONAS VALUES 
(2, 'ALEJANDRO'),
(7, 'ZAIDA'),
(8, 'XIMENA'), 
(10, 'ELÍAS'), 
(15, 'TATIANA'), 
(9, 'PENÉLOPE');

CREATE TABLE HOBBIES(
    ID_PERSONA INT UNSIGNED,
    HOBBY VARCHAR(50)
);

INSERT INTO HOBBIES VALUES 
(4, 'LECTURA'), 
(5, 'FÚTBOL'), 
(6, 'TENIS'),  
(7, 'ALPINISMO'), 
(8, 'FOTOGRAFÍA'), 
(9, 'HIPISMO');
1 respuesta
solución!

¡Hola Estudiante, espero que estés bien!

Es cierto que MySQL no soporta directamente el FULL JOIN. Sin embargo, como bien mencionaste, puedes simular un FULL JOIN usando una combinación de LEFT JOIN y RIGHT JOIN junto con UNION.

Tu consulta está correctamente estructurada para lograr este propósito. La idea es combinar los resultados de un LEFT JOIN y un RIGHT JOIN para incluir todos los registros de ambas tablas, incluso si no tienen coincidencias en la otra tabla.

Aquí tienes un breve resumen de lo que hace tu consulta:

  1. RIGHT JOIN: Obtiene todos los hobbies y los nombres correspondientes de las personas, si existen.
  2. LEFT JOIN: Obtiene todos los nombres de las personas y los hobbies correspondientes, si existen.
  3. UNION: Combina los resultados de ambos JOINs, eliminando duplicados para simular un FULL JOIN.

Tu consulta es una excelente solución para superar la limitación de MySQL. Espero que esto te ayude a entender mejor cómo manejar FULL JOIN en MySQL.

¡Espero haber ayudado y buenos estudios!