Subquery

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. Con 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.

2 comentarios de “Subquery

  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 *