Dans cette section : Comment : Référence : |
L'instruction WHERE sélectionne les enregistrements de source de données à inclure dans le rapport. Avant d'être récupérées de la source de données, les données sont évaluées selon des critères de sélection.
Vous pouvez utiliser autant de phrases WHERE que nécessaire pour définir vos critères de sélection. Pour voir une illustration, consultez Utilisation de phrases WHERE multiples. Pour plus d'informations, consultez Utiliser les expressions composées dans la sélection d'enregistrements.
Remarque : des tests de sélection multiples des champs résidant sur les différents chemins d'une source de données à chemins multiples sont traités comme s'ils étaient connectés par un opérateur AND ou OR, selon la définition du paramètre MULTIPATH. Pour plus de détails, consultez Contrôler la sélection d'enregistrements dans les sources de données à chemins multiples.
WHERE criteria [;]
où :
La phrase WHERE peut comprendre :
Notez que les fichiers utilisés avec les expressions DECODE peuvent contenir deux colonnes, l'une pour les valeurs de champ et l'autre pour les valeurs de décodage numériques.
Vous pouvez générer des critères de sélection complexes en liant des expressions simples à l'aide des opérateurs logiques AND et OR et, à titre d'option, en ajoutant des parenthèses afin de spécifier explicitement l'ordre de l'évaluation. Cette méthode est plus facile que celle utilisant la phrase IF, car celle-ci peut exiger l'utilisation d'une autre commande DEFINE. Pour plus d'informations, consultez Utiliser les expressions composées dans la sélection d'enregistrements.
Pour afficher que les noms et salaires des employés gagnant plus de $20 000 par an, lancez la requête suivante :
TABLE FILE EMPLOYEE PRINT LAST_NAME AND FIRST_NAME AND CURR_SAL BY LAST_NAME NOPRINT WHERE CURR_SAL GT 20000 END
Dans cet exemple, CURR_SAL est un champ sélectionné, et CURR_SAL GT 20000 est le critère de sélection. Seuls les enregistrements avec un salaire actuel supérieur à 20 000 $ sont récupérés. Tous les autres enregistrements sont ignorés.
La sortie est :
Vous pouvez utiliser autant de phrases WHERE que nécessaire pour définir vos critères de sélection. Cette requête utilise des phrases WHERE multiples pour que seuls les employés des services MIS ou Production dont le nom est Cross ou Banning soient compris dans le rapport.
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 sortie est :
Pour plus d'informations, consultez Utiliser les expressions composées dans la sélection d'enregistrements.
Comment : Référence : |
Lorsque vous reportez d'une source de données à chemins multiples, un segment parent peut avoir des enfants sur certains chemins, mais pas sur d'autres. Le paramètre MULTIPATH vous permet de déterminer si un tel segment parent est omis de la sortie de rapport.
Le paramètre MULTIPATH a une incidence sur le traitement des tests de sélection sur les chemins indépendants. Si MULTIPATH égale :
Les paramètres MULTIPATH s'appliquent à tout type de source données et à tout environnement de reporting (TABLE, TABLEF, MATCH, GRAPH et les requêtes aux commandes d'affichage multiples). MULTIPATH fonctionne également avec d'autres vues, des vues indexées, des filtres, DBA et les structures jointes.
Pour définir MULTIPATH à partir du niveau de commande ou dans une procédure stockée, utilisez
SET MULTIPATH = {SIMPLE|COMPOUND}
Pour définir MULTIPATH dans une requête de rapport, utilisez
ON TABLE SET MULTIPATH {SIMPLE|COMPOUND}
où :
Remarque : un segment unique est considéré comme faisant partie de son segment parent, et n'entraîne donc aucun traitement de chemin indépendant.
Le message d'avertissement (FOC144) est généré lorsque une requête exécute la présélection de données dans un rapport à chemins multiples.
(FOC144) WARNING. TESTING IN INDEPENDENT SETS OF DATA
Pour plus d'informations, consultez Combinaisons de MULTIPATH et SET ALL et Règles pour déterminer la nécessité d'un segment.
Le nombre d'instances de segments (lignes) est illimité. Pourtant, aucune instance de segments unique ne peut avoir plus de 4K de champs actifs (champs référencés ou champs exigés pour la récupération de champs référencés). Si cette limite est dépassée, le paramètre SIMPLE est mise en œuvre et un message est généré.
Cet exemple utilise les segments suivants de la source de données EMPLOYEE :
La requête suivante récupère les données des deux chemins à l'aide de MULTIPATH = SIMPLE et affiche les données si l'un des critères est rempli :
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
Le message d'avertissement suivant est généré :
(FOC144) WARNING. TESTING IN INDEPENDENT SETS OF DATA
Bien que plusieurs employés n'aient suivi aucun cours, ils sont compris dans la sortie de rapport car ils ont des instances sur un des deux chemins.
La sortie est :
Si vous exécutez cette même requête en utilisant MULTIPATH = COMPOUND, les employés sans instances de COURSE_NAME sont omis de la sortie de rapport et le message d'avertissement n'est pas généré.
La sortie est :
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
Le paramètre ALL a une incidence sur le traitement de chemin indépendant. Le tableau suivant utilise des exemples de la source de données EMPLOYEE afin d'expliquer l'interaction de ALL et MULTIPATH.
Requête |
MULTIPATH=SIMPLE |
MULTIPATH=COMPOUND |
---|---|---|
SET ALL = OFF PRINT EMP_ID PAY_DATE DATE_ATTEND |
Affiche les employés ayant soit des données SALINFO soit des données ATTNDSEG. |
Affiche les employés ayant des données SALINFO et des données ATTNDSEG. |
SET ALL = ON PRINT EMP_ID PAY_DATE DATE_ATTEND |
Affiche les employés ayant des données SALINFO ou des données ATTNDSEG ou aucune donnée enfant. |
Même que SIMPLE. |
SET ALL = OFF PRINT EMP_ID PAY_DATE DATE_ATTEND WHERE PAY_DATE EQ 980115 |
Affiche les employés ayant soit des données SALINFO pour 980115 soit des données ATTNDSEG. Génère un message (FOC144). |
Affiche les employés ayant des données SALINFO pour 980115 et des données ATTNDSEG. |
SET ALL = ON PRINT EMP_ID PAY_DATE DATE_ATTEND WHERE PAY_DATE EQ 980115 |
Affiche les employés ayant soit des données SALINFO pour 980115 soit des données ATTNDSEG. Génère un message (FOC144). |
Affiche les employés ayant des données SALINFO pour 980115. Toutes les données DATE_ATTEND s'affichent aussi. |
SET ALL = OFF PRINT ALL.EMP_ID DATE_ATTEND WHERE PAY_DATE EQ 980115 |
Affiche les employés ayant soit des données SALINFO pour 980115 soit des données ATTNDSEG. Génère un message (FOC144). |
Affiche les employés ayant des données SALINFO pour 980115. Toutes les données DATE_ATTEND s'affichent aussi. |
SET ALL = ON or OFF
PRINT EMP_ID PAY_DATE DATE_ATTEND
WHERE PAY_DATE EQ 980115 AND COURSE_CODE EQ '103' |
Affiche les employés ayant soit des données SALINFO pour 980115 soit des données COURSE 103. Remarque : SIMPLE traite AND dans la clause WHERE en tant que OR. Génère un message (FOC144). |
Affiche les employés ayant des données SALINFO pour 980115 et des données COURSE 103. |
Remarque : SET ALL = PASS n'est pas supporté avec MULTIPATH = COMPOUND.
Pour en savoir plus au sujet du paramètre ALL, consultez Gestion d'enregistrements avec des valeurs de champs manquantes.
La règle de segment est appliquée niveau par niveau, en descendant la hiérarchie de source/vue de données. C'est-à-dire, l'existence d'un segment dépend de celle du segment enfant, et l'existence du segment enfant dépend de celle du petit-enfant, et ainsi de suite pour le tout de l'arbre de source de données.
Les règles suivantes aident à déterminer si un segment est nécessaire ou facultatif :
Lorsque SET ALL = PASS, un segment avec des critères WHERE ou IF est facultatif.
Remarque : ALL = PASS n'est pas supporté avec tous les adaptateurs de données et dans le cas où il n'est pas supporté, il peut se comporter de manière légèrement différente. Pour pous de détails, consultez votre documentation d'adaptateur de données particulier.
Pour en savoir plus au sujet du paramètre ALL, consultez Gestion d'enregistrements avec des valeurs de champs manquantes et à Description de données en langage WebFOCUS .
WebFOCUS |