Subqueries en ABAP Open SQL: guía práctica

Las subqueries en ABAP Open SQL permiten usar el resultado de una consulta dentro de otra para filtrar y comparar datos. Esta guía reúne sus operadores principales y las consideraciones para utilizarlos correctamente.

Las Subquerys se utilizan para realizar subconsultas en las condiciones del WHERE para los filtros de las columnas, donde en la comparación se pueden realizar consultas de lectura. Esta lección trata de enseñarle cómo aplicar estas subconsultas.

  • Sintaxis

… col operator [ALL|ANY|SOME] subquery …

  • Efecto
  • Listado de resultados de línea única

Si el conjunto de resultados de la subconsulta contiene sólo una línea, la comparación se puede realizar sin la especificación de ALL, ANY o SOME. La expresión es verdadera si la comparación correspondiente del valor de col con el resultado de la subconsulta escalar devuelve «true». Si el conjunto de resultados para la subconsulta contiene varias líneas, se produce una excepción no controlada cuando se ejecuta la instrucción.

  • Listado de resultados de líneas múltiples

Si el conjunto de resultados de la subsquery contiene más de una línea, se debe especificar ALL, ANY o SOME.
Si utiliza ALL, la expresión es true si la comparación es verdadera para todas las líneas del conjunto de resultados de la subconsulta escalar.
Con la suma ANY o SOME, la expresión es verdadera si es verdadera para al menos una de las líneas del conjunto de resultados de la subconsulta.

  • Aplicación práctica

En la lógica del código fuente realizamos una única lectura que devuelve todos los registros de la tabla de base de datos ZSFLIGHTSA00001 que tienen en la tabla ZSAPLANESA00001 el tipo de avión DC-10-10.

  1. Implementamos el código fuente.
  2. Ejecutamos el programa. Subqueries en ABAP Open SQL: guía práctica 1Con las subconsultas hemos conseguido el mismo resultado que normalmente se realiza en dos sentencias de lectura. En este caso comparamos en el filtro del WHERE para la columna PLANETYPE que sólo se tenga en cuenta los registros que tienen el tipo de avión DC-10-10 en otra tabla.

Preguntas frecuentes

¿Qué es una subquery en ABAP Open SQL?

Es una consulta anidada cuyo resultado se utiliza dentro de una condición o expresión de otra consulta SQL.

¿Cuándo usar EXISTS en lugar de IN?

EXISTS es útil cuando solo necesitas comprobar si existe una coincidencia; IN compara un valor con un conjunto de resultados.

2 comentarios de “Subqueries en ABAP Open SQL: guía práctica

  1. ARMANDO CHAVEZ dice:

    Bajo el concepto de buenas prácticas ABAP, hacer Sub-Consultas en los WHERE, ¿es óptimo para el performance de la Base de Datos? o… ¿es más óptimo hacer un INNER JOIN ?
    ¿ Cuál es la mejor recomendación?

  2. Gheorghe Valer dice:

    Hola Armando,

    Depende de los tipos de tablas, y de la forma en la que el where se realiza ya que no es lo mismo hacer una subquery con un where que usa todas las claves o no. Por eso te recomiendo usar la ST05 para medir los tiempos.

    Un saludo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *