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

Introducción al curso gratuito de SQL Server

Introducción al curso gratuito de SQL Server

SQL es un lenguaje de consulta estructurado de base de datos normalizado, utilizado por algunos motores de base de datos DB2, SQL Server, Oracle, MySql, Sybase, PostgreSQL, entre otros.

Ver artículo completo
Cómo cambiar el nombre de un índice con el procedimiento almacenado sp_rename y SQL Server Management Studio

Cómo cambiar el nombre de un índice con el procedimiento almacenado sp_rename y SQL Server Management Studio

Resumen: en este tutorial, aprenderás a cambiar el nombre de un índice utilizando el procedimiento almacenado del sistema sp_rename y SQL Server Management Studio.

Ver artículo completo
Cómo eliminar índices con DROP INDEX en SQL Server

Cómo eliminar índices con DROP INDEX en SQL Server

Resumen: en este tutorial, aprenderás a usar la instrucción DROP INDEX de SQL Server para eliminar índices existentes.

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 ;