SQL

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

Estrada Web Group
Estrada Web Group
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 agrupar registros en SQL Server con la cláusula GROUP BY?

¿Cómo agrupar registros en SQL Server con la cláusula GROUP BY?

En este tutorial, aprenderá a usar la cláusula GROUP BY de SQL Server para organizar las filas en grupos por una o más columnas.

Ver artículo completo
Columnas calculadas en SQL Server

Columnas calculadas en SQL Server

Resumen: en este tutorial, aprenderá a usar las columnas calculadas de SQL Server para reutilizar la lógica de cálculo en varias consultas.

Ver artículo completo
Cómo dividir una cadena de texto separada por comas con STRING_SPLIT de SQL Server

Cómo dividir una cadena de texto separada por comas con STRING_SPLIT de SQL Server

Resumen: en este tutorial, aprenderás a usar la función STRING_SPLIT() de SQL Server para dividir una cadena en una fila de subcadenas en función de un separador específico.

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