28% de descuento del curso en SQL Server

Estrada Web Group Estrada Web Group
FULL OUTER JOIN en SQL
Estrada Web Group
Estrada Web Group
Estrada Web Group Estrada Web Group
Calificar:
30 septiembre SQL

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

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:

Cargando...
Descarga el código fuente

Obten el código del sistema de gestión de proyectos.

Shape