Selecciones basadas en valores individuales

En esta sección:

Cómo:

Referencia:

La frase WHERE selecciona registros del origen de datos para incluirlos en el informe. Los datos se evalúan de acuerdo a los criterios de selección antes de recuperarlos del origen de datos.

Puede utilizar tantas frases WHERE como sea necesario para definir criterios de selección. Para ver un ejemplo, consulte Utilizar múltiples frases WHERE. Para más información, consulte Cómo utilizar expresiones compuestas para seleccionar registros .

Nota: Las pruebas de selección múltiple en campos que residen en rutas diferentes de un origen de datos de rutas múltiples se procesan como si estuvieran conectadas por operadores AND u OR, según sea la fuerza de un parámetro llamado MULTIPATH. Para obtener información detallada, consulte Cómo controlar la selección de registros en orígenes de datos de rutas múltiples


Principio de página

x
Sintaxis: Cómo Seleccionar registros con WHERE
WHERE criteria [;]

donde:

criteria
Son los criterios para seleccionar registros que incluir en el informe. Los criterios deben definirse en una expresión válida que evalúe sobre la base de falso o verdadero; es decir, una expresión booleana. Para una descripción detallada de las expresiones, consulte Cómo utilizar expresiones. Los operadores que pueden emplearse en expresiones WHERE (como CONTAINS, IS o GT) aparecen descritos en Operadores admitidos para pruebas WHERE e IF.
;
Es un punto y coma opcional que se puede utilizar para aumentar la legibilidad del texto. No afecta el informe.

Principio de página

x
Referencia: Notas sobre el uso de las frases WHERE

La frase WHERE puede incluir:

Puede construir criterios de selección complejos combinando expresiones simples con los operadores lógicos AND y OR y, de manera opcional, poner paréntesis para especificar el orden de evaluación de forma explícita. Esto es más fácil que intentar obtener el mismo efecto con la frase IF, que podría requerir el uso de un comando DEFINE por separado. Para más detalles, consulte Cómo utilizar expresiones compuestas para seleccionar registros .



Ejemplo: Utilizar una prueba WHERE simple

Para mostrar solamente los nombres y salarios de los empleados que ganen más de $20,000 al año, emita la siguiente solicitud:

TABLE FILE EMPLOYEE
PRINT LAST_NAME AND FIRST_NAME AND CURR_SAL
BY LAST_NAME NOPRINT
WHERE CURR_SAL GT 20000
END

En este ejemplo: CURR_SAL es un campo seleccionado, y CURR_SAL GT 20000 es el criterio de selección. Sólo se recuperan los registros con un salario actual superior a $20,000. Se ignoran todos los demás registros.

La salida es:



Ejemplo: Utilizar múltiples frases WHERE

Puede utilizar tantas frases WHERE como sea necesario para definir criterios de selección. Esta solicitud utiliza múltiples frases WHERE, de manera que solamente se incluyen en el informe los empleados en los departamentos MIS y de producción, que tengan los apellidos Cross o Banning.

TABLE FILE EMPLOYEE
PRINT EMP_ID LAST_NAME
WHERE SALARY GT 20000
WHERE DEPARTMENT IS 'MIS' OR 'PRODUCTION'
WHERE LAST_NAME IS 'CROSS' OR 'BANNING'
END

La salida es:

Para obtener información relacionada, consulte Cómo utilizar expresiones compuestas para seleccionar registros .


Principio de página

x
Cómo controlar la selección de registros en orígenes de datos de rutas múltiples

Cómo:

Referencia:

Cuando informa desde un origen de datos de múltiples rutas, un segmento principal podría tener segmentos secundarios en varias rutas, pero no en otras. El parámetro MULTIPATH le permite controlar si se omite dicho segmento principal de la salida de informe.

La configuración MULTIPATH afecta también el procesamiento de las pruebas de selección en rutas independientes. Si MULTIPATH se establece en:

Las configuraciones MULTIPATH se aplican en todo tipo de orígenes de datos y en todos los entornos de informes (TABLE, TABLEF, MATCH, GRAPH y solicitudes con múltiples comandos de visualización). MULTIPATH funciona también con vistas alternativas, vistas indexadas, DBA y estructuras unidas.



x
Sintaxis: Cómo Controlar la selección de registros en orígenes de datos de múltiples rutas

Para establecer MULTIPATH desde el nivel de comandos o en un procedimiento almacenado, utilice

SET MULTIPATH = {SIMPLE|COMPOUND}

Para establecer MULTIPATH en una solicitud de informe, utilice

ON TABLE SET MULTIPATH {SIMPLE|COMPOUND}

donde:

SIMPLE
Incluye un segmento principal en la salida de informe si:
  • Tiene al menos un segmento secundario que pasa sus condiciones de filtrado.

    Nota: Un segmento único se considera parte de su segmento principal y, por lo tanto, no invoca procesamiento de ruta independiente.

  • Le falta cualquier segmento secundario mencionado en una ruta, pero el segmento secundario es opcional.

    El mensaje de advertencia (FOC144) se genera cuando una solicitud filtra datos en un informe de rutas múltiples:

    (FOC144) WARNING. TESTING IN INDEPENDENT SETS OF DATA
COMPOUND
Incluye un padre en la salida del informe cuando contiene todos los hijos obligatorios. Las pruebas WHERE o IF en rutas separadas se tratan como si estuvieran conectadas por un operador AND. Eso es, todas las rutas deben pasar las pruebas de selección para que el principal quede incluido en la salida del informe. COMPOUND es el valor predeterminado.

Para obtener información relacionada, consulte Las combinaciones MULTIPATH y SET ALL y Reglas para determinar si se necesita un segmento.



x
Referencia: Requisitos y notas sobre el uso de MULTIPATH = COMPOUND


Ejemplo: Cómo recuperar datos de múltiples rutas

Este ejemplo utiliza los siguientes segmentos del origen de datos EMPLOYEE:

La solicitud que sigue recupera datos de ambas rutas con MULTIPATH = SIMPLE y muestra datos si se satisface alguno de los criterios:

SET ALL = OFF
SET MULTIPATH = SIMPLE
TABLE FILE EMPLOYEE 
PRINT GROSS DATE_ATTEND COURSE_NAME
BY LAST_NAME BY FIRST_NAME
WHERE PAY_DATE EQ 820730
WHERE COURSE_CODE EQ '103'
END

Se genera el siguiente mensaje de advertencia:

(FOC144) WARNING. TESTING IN INDEPENDENT SETS OF DATA

Aunque varios empleados no han tomado cursos, se los incluye en la salida de informe pues tienen casos en una de las dos rutas.

La salida es:

Si ejecuta la misma solicitud con MULTIPATH = COMPOUND, se omiten de la salida de informe los empleados sin casos para COURSE_NAME y no se genera el mensaje de advertencia.

La salida es:

LAST_NAME       FIRST_NAME            GROSS  DATE_ATTEND  COURSE_NAME      
---------       ----------            -----  -----------  -----------      
JONES           DIANE             $1,540.00     82/05/26  BASIC REPORT PREP FOR PROG
SMITH           MARY              $1,100.00     81/11/16  BASIC REPORT PREP FOR PROG


x
Referencia: Las combinaciones MULTIPATH y SET ALL

El parámetro ALL afecta el procesamiento de ruta independiente. La siguiente tabla utiliza ejemplos del origen de datos EMPLOYEE para explicar la interacción entre ALL y MULTIPATH.

Solicitud

MULTIPATH=SIMPLE

MULTIPATH=COMPOUND

SET ALL = OFF
PRINT EMP_ID PAY_DATE DATE_ATTEND

Muestra empleados que tienen bien datos SALINFO, bien datos ATTNDSEG.

Muestra empleados que tienen tanto datos SALINFO, como datos ATTNDSEG.

SET ALL = ON
PRINT EMP_ID PAY_DATE DATE_ATTEND

Muestra empleados que tienen datos de SALINFO o ATTNDSEG o que no tienen dato secundario alguno.

Igual que SIMPLE.

SET ALL = OFF
PRINT EMP_ID PAY_DATE DATE_ATTEND
WHERE PAY_DATE EQ 980115

Muestra empleados que tienen bien datos SALINFO de 980115, bien cualquier dato ATTNDSEG.

Produce el mensaje (FOC144).

Muestra empleados que tienen tanto datos SALINFO de 980115, como datos ATTNDSEG.

SET ALL = ON
PRINT EMP_ID PAY_DATE DATE_ATTEND
WHERE PAY_DATE EQ 980115

Muestra empleados que tienen bien datos SALINFO de 980115, bien cualquier dato ATTNDSEG.

Produce el mensaje (FOC144).

Muestra empleados que tengan datos SALINFO para 980115. También se muestran Cualquier datos DATE_ATTEND.

SET ALL = OFF 
PRINT ALL.EMP_ID DATE_ATTEND
WHERE PAY_DATE EQ 980115

Muestra empleados que tienen bien datos SALINFO de 980115, bien cualquier dato ATTNDSEG.

Produce el mensaje (FOC144).

Muestra empleados que tengan datos SALINFO para 980115. También se muestran Cualquier datos DATE_ATTEND.

SET ALL = ON or OFF
PRINT EMP_ID PAY_DATE DATE_ATTEND
WHERE PAY_DATE EQ 980115 AND COURSE_CODE EQ  '103'

Muestra empleados que tienen bien datos SALINFO de 980115, bien cualquier dato COURSE 103.

Nota: SIMPLE trata el AND de claúsulas WHERE como si fuera un OR.

Produce el mensaje (FOC144).

Muestra empleados que tienen tanto datos SALINFO de 980115, como datos COURSE 103.

Nota: No se admite SET ALL = PASS con MULTIPATH = COMPOUND.

Para obtener información relacionada acerca del parámetro ALL, consulte Cómo manejar registros con valores de campo no disponibles.



x
Referencia: Reglas para determinar si se necesita un segmento

La regla del segmento se aplica nivel por nivel, descendiendo a través de la jerarquía origen de datos/vista. Es decir, la existencia de un segmento principal depende de la existencia del segmento secundario y la existencia del segmento secundario depende de la existencia del segmento terciario y así sucesivamente para el árbol completo de origen de datos.

Las siguientes reglas se utilizan para determinar si se requiere un segmento o si es opcional.

Nota: No se admite ALL = PASS en todos los adaptadores de datos y, si se admite, puede que se comporte de manera un poco diferente. Revise su documentación específica de adaptador de datos para obtener información detallada.

Para obtener información relacionada al parámetro ALL, consulte Cómo manejar registros con valores de campo no disponibles y el manual Cómo describir datos con el lenguaje WebFOCUS.


WebFOCUS