Las consultas combinadas o JOINS son el resultado de una operación de combinación realizada sobre dos o más tablas. Se pueden realizar las siguientes combinaciones:
Combinación interna (Inner
Join)
La
combinación interna nos permite mostrar los datos de dos o más tablas a través
de una condición WHERE. Para realizar la consulta combinada entre dos tablas debemos
escribir una consulta SELECT en cuya clausula FROM escribiremos el nombre de las dos
tablas, separados por comas, y una condición WHERE que obligue
mediante un código clave la unión de datos en dos o mas tablas de la siguiente manera:
SELECT RCTA.TRX_NUMBER,
RCTA.COMMENTS,
RCTA.INVOICE_CURRENCY_CODE,,
XDT.CODE,
XDT.DETAIL_NAME
FROM APPS.RA_CUSTOMER_TRX_ALL RCTA
WHERE APPS.XX_DETAIL_TRX_ALL XDT
AND RCTA.CUSTOMER_TRX_ID = XDT.CUSTOMER_TRX_ID
Otra opción es
utilizar la cláusula INNER JOIN. Su sintaxis es idéntica a la de una consulta SELECT, con la particularidad de
que en la clausula FROM sólo aparece con una tabla o vista, añadiéndose el resto de
tablas a través de cláusulas INNER JOIN de
la siguiente manera:
SELECT RCTA.TRX_NUMBER,
RCTA.COMMENTS,
RCTA.INVOICE_CURRENCY_CODE,,
XDT.CODE,
XDT.DETAIL_NAME
FROM APPS.RA_CUSTOMER_TRX_ALL RCTA
INNER JOIN APPS.XX_DETAIL_TRX_ALL XDT
ON RCTA.CUSTOMER_TRX_ID = XDT.CUSTOMER_TRX_ID
La cláusula INNER JOIN permite separar completamente las condiciones de combinación con otros
criterios, cuando tenemos consultas que combinan nueve o diez tablas esto
realmente se agradece. Sin embargo muchos programadores no son amigos de la
cláusula INNER JOIN, la razón es que uno
de los principales gestores de bases de datos, ORACLE, no la soportaba. Si
nuestro programa debía trabajar sobre bases de datos ORACLE no podíamos utilizar INNER JOIN. A partir de la version ORACLE 9i oracle
soporta la cláusula INNER JOIN.
Combinación externa Completa (Full Outer Join)
La cláusula FULL OUTER JOIN específica que se debería incluir
en el resultado las filas que no cumplen con la condición ON, así como las
filas que que cumplen la condición ON. En el campo donde no es coincidente la
condición se coloca NULL.
SELECT RCTA.TRX_NUMBER,
RCTA.COMMENTS,
RCTA.INVOICE_CURRENCY_CODE,,
XDT.CODE,
XDT.DETAIL_NAME
FROM APPS.RA_CUSTOMER_TRX_ALL RCTA
FULL OUTER JOIN APPS.XX_DETAIL_TRX_ALL XDT
ON RCTA.CUSTOMER_TRX_ID = XDT.CUSTOMER_TRX_ID
Combinación externa por la izquierda (Left Outer Join)
La combinación externa con LEFT
OUTER JOIN obtenemos todos los registros de en la tabla
que situemos a la izquierda de la clausula JOIN. Devuelve las filas
coincidentes más todas las filas de la tabla que se especifican a la izquierda
de la palabra clave JOIN.
SELECT RCTA.TRX_NUMBER,
RCTA.COMMENTS,
RCTA.INVOICE_CURRENCY_CODE,,
XDT.CODE,
XDT.DETAIL_NAME
FROM APPS.RA_CUSTOMER_TRX_ALL RCTA
LEFT OUTER JOIN APPS.XX_DETAIL_TRX_ALL XDT
ON RCTA.CUSTOMER_TRX_ID = XDT.CUSTOMER_TRX_ID
Combinación externa por la derecha (Right Outer Join)
Es lo contrario a Left Outer. La combinación con RIGHT OUTER JOIN obtenemos el efecto contrario. Devuelve las
filas coincidentes más todas las filas de la tabla que se especifican a la derecha
de la palabra clave JOIN.
SELECT RCTA.TRX_NUMBER,
RCTA.COMMENTS,
RCTA.INVOICE_CURRENCY_CODE,,
XDT.CODE,
XDT.DETAIL_NAME
FROM APPS.RA_CUSTOMER_TRX_ALL RCTA
RIGHT OUTER JOIN APPS.XX_DETAIL_TRX_ALL XDT
ON RCTA.CUSTOMER_TRX_ID = XDT.CUSTOMER_TRX_ID
No hay comentarios:
Publicar un comentario