SQL

Cómo usar FULL OUTER JOIN de SQL Server para consultar datos de dos o más tablas

Estrada Web Group
jiestrada
Cómo usar FULL OUTER JOIN de SQL Server para consultar datos de dos o más tablas

Resumen: en este tutorial, aprenderás a usar FULL OUTER JOIN de SQL Server para consultar datos de dos o más tablas.

Introducción a FULL OUTER JOIN de SQL Server

FULL OUTER JOIN devuelve un conjunto de resultados que incluye filas de las tablas izquierda y derecha. Cuando no existen filas coincidentes para la fila de la tabla de la izquierda, las columnas de la tabla de la derecha tendrán nulos. De manera similar, cuando no existen filas coincidentes para la fila de la tabla de la derecha, la columna de la tabla de la izquierda tendrá nulos, otras cláusulas que puedes utilizar para hacer combinaciones entre tablas son INNER JOIN, LEFT JOIN y RIGHT JOIN.

A continuación, se muestra la un SELECT usando FULL OUTER JOIN al unir dos tablas T1 y T2:

SELECT
    select_list
FROM
    T1
FULL OUTER JOIN T2 ON join_predicate;

La palabra clave OUTER es opcional, por lo que puedes omitirla como se muestra en la siguiente consulta:

SELECT
    select_list
FROM
    T1
FULL JOIN T2 ON join_predicate;

En esta sintaxis:

  • Primero, se especifica la tabla izquierda T1 en la cláusula FROM.
  • En segundo lugar, se especifica la tabla T2 de la derecha y un predicado de combinación.

El siguiente diagrama de Venn ilustra FULL OUTER JOIN de dos conjuntos de resultados:

Ejemplo de full outer join de SQL Server

Ejemplo de full outer join de SQL Server

Configuremos una tabla de muestra para demostrar cómo se usa la full outer join.

Primero, crea un nuevo esquema llamado pm que significa project managements (gestión de proyectos).

CREATE SCHEMA pm;
GO

A continuación, crea nuevas tablas denominadas projects (proyectos) y (members) miembros en el esquema pm:

CREATE TABLE pm.projects(
    id INT PRIMARY KEY IDENTITY,
    title VARCHAR(255) NOT NULL
);

CREATE TABLE pm.members(
    id INT PRIMARY KEY IDENTITY,
    name VARCHAR(120) NOT NULL,
    project_id INT,
    FOREIGN KEY (project_id)
        REFERENCES pm.projects(id)
);

Supongamos que cada miembro solo puede participar en un proyecto y cada proyecto tiene cero o más miembros. Si un proyecto está en la fase de idea, no hay ningún miembro asignado.

Ahora, con la idea anterior inserta algunas filas en las tablas de proyectos y miembros:

INSERT INTO
    pm.projects(title)
VALUES
    ('New CRM Estrada Web Group'),
    ('ERP EWG'),
    ('Develop Mobile Sales Platform');


INSERT INTO
    pm.members(name, project_id)
VALUES
    ('John Doe', 1),
    ('Lily Bush', 1),
    ('Jane Doe', 2),
    ('Jack Daniel', null);

Después de eso, consulta los datos de las tablas de proyectos y miembros:

SELECT * FROM pm.projects;

Resultado:

FULL OUTER JOIN para consultar los datos de las tablas

SELECT * FROM pm.members;

Resultado:

FULL OUTER JOIN para consultar los datos de las tablas

Finalmente, usa FULL OUTER JOIN para consultar los datos de las tablas proyectos y de miembros:

SELECT
    m.name member,
    p.title project
FROM
    pm.members m
    FULL OUTER JOIN pm.projects p
        ON p.id = m.project_id;

Resultado:

FULL OUTER JOIN CON WHERE y NULL

En este ejemplo, la consulta devolvió miembros que participan en proyectos, miembros que no participan en ningún proyecto y proyectos que no tienen ningún miembro.

Para encontrar los miembros que no participan en ningún proyecto y proyectos que no tienen miembros, agrega una cláusula WHERE y NULL a la consulta anterior:

SELECT
    m.name member,
    p.title project
FROM
    pm.members m
    FULL OUTER JOIN pm.projects p
        ON p.id = m.project_id
WHERE
    m.id IS NULL OR
    P.id IS NULL;

Resultado:

Ejemplo de full outer join de SQL Server

Como se muestra claramente en el resultado, Jack Daniel no participa en ningún proyecto y Develop Mobile Sales Platform no tiene miembros.

En este tutorial, has aprendido a usar full outer join de SQL Server para consultar datos de dos o más tablas.

 

Compartir artículo:

Más artículos geniales

¿Cómo unir o concatenar dos o más columnas separadas por un espacio en SQL con CONCAT_WS?

¿Cómo unir o concatenar dos o más columnas separadas por un espacio en SQL con CONCAT_WS?

En este tutorial, aprenderá a usar la función CONCAT_WS() de SQL Server para unir varias cadenas junto con un separador, esta función solo esta disponible en SQL Server 2017 en adelante.

Ver artículo completo
¿Qué es el tipo de dato varchar de SQL Server y cuando utilizarlo?

¿Qué es el tipo de dato varchar de SQL Server y cuando utilizarlo?

En este tutorial, aprenderá a usar el tipo de datos VARCHAR de SQL Server para almacenar datos de cadena de longitud variable y no Unicode.

Ver artículo completo
Cómo modificar una columna de una tabla de SQL Server con ALTER COLUMN

Cómo modificar una columna de una tabla de SQL Server con ALTER COLUMN

Resumen: en este tutorial, aprenderás a usar la instrucción ALTER TABLE ALTER COLUMN de SQL Server para modificar una columna de una tabla.

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla ;