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
WHERE criteria [;]
donde:
La frase WHERE puede incluir:
Fíjese en que los archivos utilizados con expresiones DECODE pueden contener dos columnas, una para los valores de campo y otra para los valores numéricos de decodificación.
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 .
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:
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 .
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.
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:
Nota: Un segmento único se considera parte de su segmento principal y, por lo tanto, no invoca procesamiento de ruta independiente.
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
Para obtener información relacionada, consulte Las combinaciones MULTIPATH y SET ALL y Reglas para determinar si se necesita un segmento.
No hay límites para el número de casos de segmentos (filas). Sin embargo, ninguno de estos casos puede tener más de 4K de campos activos (campos citados o campos necesarios para recuperar campos citados). Si se sobrepasa el límite, se implementa la configuración SIMPLE y se devuelve un mensaje.
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
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.
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.
Cuando SET ALL = PASS, un segmento con criterios WHERE o IF 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 |