AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / Editores / Editor de consultas / SQL
  • 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:
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
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.
Para conocer todos los comandos de SQL (funciones, cláusulas, operadores, etc.) que pueden utilizarse en una consulta SQL gestionada por HFSQL, consulte Comandos que se pueden utilizar en una consulta SQL gestionada por HFSQL.
Uniones interiores

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)
Uniones externas

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 JOINSe 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 JOINUniones 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 JOINSe 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
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/05/2022

Señalar un error o enviar una sugerencia | Ayuda local