|
|
|
|
- Presentación
- Uniones interiores
- Definición
- Formato de uso
- Ejemplo:
- Uniones externas
- Definición
- Los diferentes tipos de uniones exteriores
- Formato de uso
- Ejemplo 1:
- Ejemplo 2:
SQL: Gestión de uniones (INNER JOIN, OUTER JOIN)
Para seleccionar registros procedentes de varios archivos de datos, se deben utilizar uniones en la consulta SQL. Se pueden utilizar dos tipos de uniones en las consultas en código SQL: - las uniones internas.
- las uniones externas.
Observación: Estas uniones pueden ser utilizadas: - en el código SQL de las consultas creadas en el editor de consultas y ejecutadas por HExecuteQuery.
- en el código SQL de las consultas ejecutadas con la función de WLanguage HExecuteSQLQuery.
Las uniones no pueden ser anidadas. Para obtener más detalles sobre las instrucciones SQL, consulte una documentación específica del lenguaje SQL. Definición Una unión interna se utiliza para seleccionar los registros que tienen correspondencia entre dos archivos unidos. Por ejemplo, para listar todos los clientes que han realizado pedidos, el fichero "Cliente" debe ser relacionado al fichero "Pedidos" a través de una unión interna.. La consulta seleccionará a los clientes de relacionado con al menos un número de pedido. Los clientes que no hayan hecho ningún pedido no aparecerán en la lista. Formato de uso Existen varias sintaxis disponibles: - Sintaxis 1: Correspondencia entre elementos idénticos encontrados en archivos diferentes (usando WHERE).
SELECT ... FROM File1, File2, File3 WHERE File1.ItemName1 = File2.ItemName1 File2.ItemName2 = File3.ItemName2 - Sintaxis 2: Correspondencia entre elementos idénticos encontrados en archivos diferentes (usando INNER JOIN): sintaxis compatible con la mayoría de las bases de datos: SQL Server, Access, MySQL y Oracle (excepto las versiones más antiguas de Oracle).
SELECT ... FROM (File1 INNER JOIN File2 ON File1.NameItem1 = File2.NameItem1) INNER JOIN File3 ON File2.NameItem2 = File3.NameItem2
También tiene la capacidad de establecer vínculos entre varios archivos de diferentes elementos. Ejemplo: SELECT CUSTOMER.CustomerLastName,
ORDERS.OrdNum
FROM CUSTOMER, ORDERS
WHERE CUSTOMER.CustNum = ORDERS.CustNum equivalente a: SELECT CUSTOMER.CustomerLastName,
ORDERS.OrdNum
FROM (CUSTOMER INNER JOIN ORDERS
ON CUSTOMER.CustNum = ORDERS.CustNum) Definición Una junta exterior se utiliza para seleccionar ambos: - los registros que tienen correspondencia entre los dos archivos de relacionado.
- los registros que no tienen correspondencia en el primer fichero, en el segundo fichero o en todos los ficheros de relacionado.
Por ejemplo, para saber la cantidad total gastada por cada cliente: - Al utilizar una unión interna, sólo se seleccionarán los clientes que ya han realizado un pedido (cuyo importe de gasto difiere de 0).
- Al utilizar una junta externa, se seleccionarán todos los clientes, incluso los que nunca han hecho un pedido.
Los diferentes tipos de uniones exteriores | | FULL OUTER JOIN | Se usa para seleccionar:- los registros que completan la unión.
- los registros del primer archivo listado que no cumplen con los requisitos de la unión. El nombre del primer archivo listado se encuentra a la izquierda del OUTER JOIN.
- los registros del segundo archivo de la lista que no cumplen con los requisitos de la unión. El nombre del segundo archivo listado se encuentra a la derecha del OUTER JOIN.
| LEFT OUTER JOIN | Uniones más comunes. Se usa para seleccionar:- los registros que completan la unión.
- los registros del primer archivo listado que no cumplen con los requisitos de la unión. El nombre del primer archivo listado se encuentra a la izquierda del OUTER JOIN.
| RIGHT OUTER JOIN | Se usa para seleccionar:- los registros que completan la unión.
- los registros del segundo archivo de la lista que no cumplen con los requisitos de la unión. El nombre del segundo archivo listado se encuentra a la derecha del OUTER JOIN.
|
Formato de uso Las sintaxis disponibles son las siguientes: - Sintaxis 1: Correspondencia entre elementos idénticos encontrados en archivos diferentes.
SELECT ... FROM (File1 LEFT/RIGHT/FULL JOIN File2 ON File1.NameItem1 = File2.NameItem1) LEFT/RIGHT/FULL JOIN File3 ON File2.NameItem2 = File3.NameItem2 - Sintaxis 2: Correspondencia entre elementos idénticos encontrados en archivos diferentes: sintaxis compatible con SQL Server, Access y MySQL.
SELECT ... FROM File1LEFT/RIGHT/FULL JOIN File2 ON File1.NameItem1 = File2.NameItem1,
LEFT/RIGHT/FULL JOIN File3 ON File2.NameItem2 = File3.NameItem2
También tiene la capacidad de establecer vínculos entre varios archivos de diferentes elementos. Ejemplo 1: SELECT CUSTOMER.CustomerLastName,
SUM(ORDERS.TotalIOT) AS TotalIOT
FROM CUSTOMER LEFT OUTER JOIN ORDERS
ON (CUSTOMER.CustNum = ORDERS.CustNum)
GROUP BY CUSTOMER.CustomerLName Ejemplo 2: SELECT CUSTOMER.CustNum,
COUNT(DISTINCT PRODUCT.Reference) AS NbProducts
FROM CUSTOMER LEFT OUTER JOIN ORDERS
ON CUSTOMER.CustNum = ORDERS.CustNum,
ORDERS JOIN ORDLINE
ON ORDERS.OrdNum = ORDLINE.OrdNum,
ORDLINE JOIN PRODUCT
ON ORDLINE.Reference = PRODUCT.Reference
GROUP BY CUSTOMER.CustNum, PRODUCT.Reference Equivalente a: SELECT CUSTOMER.CustomerLastName,
COUNT(DISTINCT PRODUCT.Reference) AS NbProducts
FROM CUSTOMER, ORDERS, ORDLINE, PRODUCT
WHERE CUSTOMER.CustNum = ORDERS.CustNum(+)
AND ORDERS.OrdNum = ORDLINE.OrdNum
AND ORDLINE.Reference = PRODUCT.Reference
GROUP BY CUSTOMER.CustNum, PRODUCT.Reference
También equivalente a: SELECT CUSTOMER.CustNum,
COUNT(DISTINCT PRODUCT.Reference) AS NbProducts
FROM ((CUSTOMER LEFT OUTER JOIN ORDERS
ON CUSTOMER.CustNum = ORDERS.CustNum)
JOIN ORDLINE
ON ORDERS.OrdNum = ORDLINE.OrdNum)
JOIN PRODUCT
ON ORDLINE.Reference = PRODUCT.Reference
GROUP BY CUSTOMER.CustNum, PRODUCT.Reference
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|