LEFT OUTER JOIN permite realizar lecturas con uniones de tablas que excluyen de las condiciones de intersección la tabla indicada en la parte izquierda. Esta lección trata de enseñarle cómo aplicar esta instrucción en las sentencias de lectura Open SQL.
… [(] {dbtab_left [AS tabalias_left]} | join
{[INNER] JOIN}|{LEFT [OUTER] JOIN}
{dbtab_right [AS tabalias_right] ON join_cond} [)] … .
La sintaxis de join es una expresión de unión recursiva. Una expresión join se compone de un lado izquierdo y un lado derecho, unidos utilizando cualquiera [INNER] JOIN o LEFT [OUTER] JOIN. Una expresión de unión puede ser una unión interna (INNER) o una unión externa (LEFT OUTER). Cada expresión de unión se puede encerrar entre paréntesis. Cuando se utiliza una expresión de unión, la instrucción SELECT no utiliza el buffer de SAP.
En el lado izquierdo, se puede especificar una tabla de base de datos transparente, una vista dbtab_left u otra combinación de expresión de unión. En el lado derecho, se debe especificar una sola tabla de base de datos transparente o una vista dbtab_right, junto con las condiciones de unión join_cond después de ON. De esta manera, es posible especificar un máximo de 24 expresiones de unión después de FROM; estas expresiones unen 25 tablas de base de datos transparentes o vistas conjuntamente. Las tablas agrupadas y de clúster no se pueden unir mediante expresiones de combinación.
- Aplicación práctica
En la lógica del código fuente realizamos un SELECT con OUTER JOIN utilizando las tablas de base de datos ZSAPLANESA00001 y ZSFLIGHTSA0001 para obtener en una tabla interna estándar las columnas PLANETYPE de la primera tabla y CARRID, CONNID de la segunda tabla. En la misma sentencia de lectura ordenados de forma descendente por las columnas CARRID y CONNID.
- Implemente el código fuente.
- Ejecute el programa.
- Conclusión
Con LEFT OUTER JOIN se excluye de la intersección los registros de la tabla izquierda y por eso aparecen en blanco los valores de las columnas CARRID y CONNID para algunos tipos de avión PLANETYPE, es decir: se seleccionan de la tabla izquierda todos los registros que cumplen la condición del WHERE y de la tabla derecha sólo los registros que cumplen la condición ON de la intersección.
Si las columnas del lado derecho se especifican después de la adición ORDER BY, el orden de clasificación en el caso de valores nulos es determinado por el sistema de base de datos.