Servidor SQL: Unirse

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Servidor SQL: Unirse

Este tutorial de SQL Server describe cómo usar participar, incluidos INNER JOINS y OUTER JOINS, en SQL Server (Transact-SQL) con sintaxis, ilustraciones visuales y ejemplos.

describir

Las JOINS de SQL Server (Transact-SQL) se utilizan para recuperar datos de varias tablas. Se realiza un JOIN de SQL Server cada vez que se unen dos o más tablas en una instrucción SQL.

Hay 4 tipos diferentes de conexiones de SQL Server:

  • SQL Server INNER JOIN (o a veces llamado unión simple)
  • Combinación externa izquierda de SQL Server (o, a veces, llamada combinación izquierda)
  • SQL Server RIGHT OUTER JOIN (o, a veces, RIGHT JOIN)
  • SQL Server FULL OUTER JOIN (o algunas veces llamado FULL JOIN)

Así que analicemos la sintaxis de JOIN de SQL Server, veamos una ilustración visual de JOIN de SQL Server y exploremos ejemplos de JOIN de SQL Server.

UNIÓN INTERNA (unión simple)

Lo más probable es que haya escrito una declaración que use SQL Server INNER JOIN. Es el tipo de conexión más común. SQL Server INNER JOINS devuelve todas las filas de varias tablas que cumplen las condiciones de unión.

sintaxis

La sintaxis para INNER JOIN en SQL Server (Transact-SQL) es:

SELECT columns
FROM table1 
INNER JOIN table2
ON table1.column = table2.column;

ilustración visual

En este gráfico visual, SQL Server INNER JOIN devuelve el área sombreada:

SQL Server INNER JOIN devolverá los registros donde se cruzan table1 y table2.

ejemplo

El siguiente es un ejemplo de INNER JOIN en SQL Server (Transact-SQL):

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers 
INNER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Este ejemplo de SQL Server INNER JOIN devolverá todas las filas de las tablas Proveedores y Pedidos en las que haya un valor de ID de proveedor coincidente en las tablas Proveedores y Pedidos.

Veamos algunos datos para explicar cómo funciona INNER JOINS:

Tenemos una tabla llamada Proveedores con dos campos (ID del proveedor y Nombre del proveedor). Contiene los siguientes datos:

Identificación del proveedor Nombre del proveedor
10000 IBM
10001 HP
10002 microsoft
10003 nvidia

Tenemos otra tabla llamada orders con tres campos (order_id, supplier_id y order_date). Contiene los siguientes datos:

Solicitar ID Identificación del proveedor fecha de orden
500125 10000 2003/05/12
500126 10001 2003/05/13
500127 10004 2003/05/14

Si ejecutamos la siguiente declaración SELECT de SQL Server (incluyendo INNER JOIN):

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers
INNER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Nuestro conjunto de resultados se ve así:

Identificación del proveedor nombre fecha de orden
10000 IBM 2003/05/12
10001 HP 2003/05/13

Las filas de Microsoft y NVIDIA en la tabla de proveedores se omitirán porque los ID de proveedor 10002 y 10003 no existen en ninguna de las tablas. La fila 500127 (order_id) en la tabla de pedidos se omitirá porque el ID de proveedor 10004 no existe en la tabla de proveedores.

sintaxis antigua

Como nota final, vale la pena mencionar que el ejemplo anterior de SQL Server INNER JOIN se puede reescribir usando la sintaxis implícita anterior de la siguiente manera (pero aún recomendamos usar la sintaxis de palabra clave INNER JOIN):

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers, orders
WHERE suppliers.supplier_id = orders.supplier_id;

izquierda combinación externa

Otro tipo de unión se llama SQL Server LEFT OUTER JOIN.Este tipo de unión devuelve todas las filas en el reloj izquierdo especificado en la condición ON, y si solo Une esas filas de otras tablas donde los campos son iguales (se cumplen las condiciones de unión).

sintaxis

La sintaxis para LEFT OUTER JOIN en SQL Server (Transact-SQL) es:

SELECT columns
FROM table1
LEFT [OUTER] JOIN table2
ON table1.column = table2.column;

En algunas bases de datos, la palabra clave LEFT OUTER JOIN se reemplaza por LEFT JOIN.

ilustración visual

En este diagrama visual, SQL Server LEFT OUTER JOIN devuelve el área sombreada:

SQL Server LEFT OUTER JOIN devolverá todos los registros de la tabla 1 y solo los registros de la tabla 2 que se cruzan con la tabla 1.

ejemplo

El siguiente es un ejemplo de una UNIÓN EXTERNA IZQUIERDA en SQL Server (Transact-SQL):

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers
LEFT OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Este ejemplo de LEFT OUTER JOIN devolverá todas las filas de la tabla Proveedores y solo aquellas filas de la tabla Pedidos donde los campos de combinación son iguales.

Si el valor de id_proveedor en la tabla de proveedores no existe en la tabla de pedidos, todos los campos de la tabla de pedidos aparecerán en el conjunto de resultados como .

Veamos algunos datos para explicar cómo funciona LEFT OUTER JOINS:

Tenemos una tabla llamada Proveedores con dos campos (ID del proveedor y Nombre del proveedor). Contiene los siguientes datos:

Identificación del proveedor Nombre del proveedor
10000 IBM
10001 HP
10002 microsoft
10003 nvidia

Tenemos una segunda tabla llamada pedidos con tres campos (id_pedido, id_proveedor y fecha_pedido). Contiene los siguientes datos:

Solicitar ID Identificación del proveedor fecha de orden
500125 10000 2003/05/12
500126 10001 2003/05/13

Si ejecutamos la siguiente sentencia SELECT (incluyendo LEFT OUTER JOIN):

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers
LEFT OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Nuestro conjunto de resultados se ve así:

Identificación del proveedor Nombre del proveedor fecha de orden
10000 IBM 2003/05/12
10001 HP 2003/05/13
10002 microsoft
10003 nvidia

Dado que se usa LEFT OUTER JOIN, se incluirán las líneas para Microsoft y NVIDIA.Sin embargo, notará que el campo order_date de estos registros contiene un valor.

unión externa derecha

Otro tipo de unión se llama SQL Server RIGHT OUTER JOIN.Este tipo de combinación devuelve todas las filas de la tabla DERECHA especificadas en la condición ON y si solo Une esas filas de otras tablas donde los campos son iguales (se cumplen las condiciones de unión).

sintaxis

La sintaxis para RIGHT OUTER JOIN en SQL Server (Transact-SQL) es:

SELECT columns
FROM table1
RIGHT [OUTER] JOIN table2
ON table1.column = table2.column;

En algunas bases de datos, la palabra clave RIGHT OUTER JOIN se reemplaza por RIGHT JOIN.

ilustración visual

En esta imagen, SQL Server RIGHT OUTER JOIN devuelve el área sombreada:

SQL Server RIGHT OUTER JOIN devolverá todos los registros en table2 y solo aquellos registros en table1 que se cruzan con table2.

ejemplo

El siguiente es un ejemplo de RIGHT OUTER JOIN en SQL Server (Transact-SQL):

SELECT orders.order_id, orders.order_date, suppliers.supplier_name
FROM suppliers
RIGHT OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Este ejemplo de RIGHT OUTER JOIN devolverá todas las filas de la tabla de pedidos y solo aquellas filas de la tabla de proveedores donde los campos de unión sean iguales.

Si el valor de id_proveedor en la tabla de pedidos no existe en la tabla de proveedores, todos los campos de la tabla de proveedores aparecerán en el conjunto de resultados como .

Veamos algunos datos para explicar cómo funciona RIGHT OUTER JOINS:

Tenemos una tabla llamada Proveedores con dos campos (ID del proveedor y Nombre del proveedor). Contiene los siguientes datos:

Identificación del proveedor Nombre del proveedor
10000 manzana
10001 Google

Tenemos una segunda tabla llamada pedidos con tres campos (id_pedido, id_proveedor y fecha_pedido). Contiene los siguientes datos:

Solicitar ID Identificación del proveedor fecha de orden
500125 10000 2013/08/12
500126 10001 2013/08/13
500127 10002 2013/08/14

Si ejecutamos la siguiente sentencia SELECT (con RIGHT OUTER JOIN):

SELECT orders.order_id, orders.order_date, suppliers.supplier_name
FROM suppliers
RIGHT OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Nuestro conjunto de resultados se ve así:

Solicitar ID fecha de orden Nombre del proveedor
500125 2013/08/12 manzana
500126 2013/08/13 Google
500127 2013/08/14

Debido a que se utilizó RIGHT OUTER JOIN, se incluirá la fila para 500127 (order_id).Sin embargo, notará que el campo Nombre del proveedor del registro contiene valor.

Unión exterior completa

Otro tipo de unión se llama SQL Server FULL OUTER JOIN. Este tipo de combinación devuelve todas las filas de la tabla de la izquierda y la tabla de la derecha con valores nulos donde no se cumple la condición de combinación.

sintaxis

La sintaxis para FULL OUTER JOIN en SQL Server (Transact-SQL) es:

SELECT columns
FROM table1
FULL [OUTER] JOIN table2
ON table1.column = table2.column;

En algunas bases de datos, la palabra clave FULL OUTER JOIN se reemplaza por FULL JOIN.

ilustración visual

En este diagrama visual, SQL Server FULL OUTER JOIN devuelve el área sombreada:

SQL Server FULL OUTER JOIN devolverá todos los registros en table1 y table2.

ejemplo

El siguiente es un ejemplo de una UNIÓN EXTERNA COMPLETA en SQL Server (Transact-SQL):

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers
FULL OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Este ejemplo de FULL OUTER JOIN devolverá todas las filas de la tabla de proveedores y todas las filas de la tabla de pedidos, y siempre que no se cumpla la condición de unión, Se expandirá a esos campos en el conjunto de resultados.

Si el valor de id_proveedor en la tabla de proveedores no existe en la tabla de pedidos, todos los campos de la tabla de pedidos aparecerán en el conjunto de resultados como .Si el valor de id_proveedor en la tabla de pedidos no existe en la tabla de proveedores, todos los campos de la tabla de proveedores aparecerán en el conjunto de resultados como .

Veamos algunos datos para explicar cómo funcionan FULL OUTER JOINS:

Tenemos una tabla llamada Proveedores con dos campos (ID del proveedor y Nombre del proveedor). Contiene los siguientes datos:

Identificación del proveedor Nombre del proveedor
10000 IBM
10001 HP
10002 microsoft
10003 nvidia

Tenemos una segunda tabla llamada pedidos con tres campos (id_pedido, id_proveedor y fecha_pedido). Contiene los siguientes datos:

Solicitar ID Identificación del proveedor fecha de orden
500125 10000 2013/08/12
500126 10001 2013/08/13
500127 10004 2013/08/14

Si ejecutamos la siguiente declaración SELECT (incluyendo FULL OUTER JOIN):

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers
FULL OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Nuestro conjunto de resultados se ve así:

Identificación del proveedor Nombre del proveedor fecha de orden
10000 IBM 2013/08/12
10001 HP 2013/08/13
10002 microsoft
10003 nvidia
2013/08/14

Se incluirán filas para Microsoft y NVIDIA porque se utiliza una UNIÓN EXTERNA COMPLETA.Sin embargo, notará que el campo order_date de estos registros contiene un valor.

Dado que se usa FULL OUTER JOIN, también se incluirá la fila para el Id. de proveedor 10004.Sin embargo, notará que los campos Id. de proveedor y Nombre de proveedor para estos registros contienen valor.

(Visited 11 times, 1 visits today)