Sélections basées sur les valeurs individuelles

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.


Haut de page

x
Syntaxe : Sélectionner des enregistrements avec WHERE
WHERE criteria [;]

où :

criteria
Sont les critères utilisés pour sélectionner les enregistrements à inclure dans le rapport. Les critères doivent être définis dans une expression valable qui évalue en tant que TRUE ou FALSE (c'est-à-dire, une expression booléenne). Les expressions sont décrites en détail à la rubrique Utilisation d'expressions. Les opérateurs pouvant être utilisés dans les expressions WHERE (y compris CONTAINS, IS et GT, sont décrites à la rubrique Opérateurs pris en charge avec les tests WHERE et IF.
;
est un point-virgule que vous pouvez insérer facultativement dans une requête pour en augmenter la lisibilité. Le point-virgule n'affecte pas le rapport.

Haut de page

x
Référence : Notes d'utilisation pour les phrases WHERE

La phrase WHERE peut comprendre :

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.



Exemple : Utiliser un test WHERE simple

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 :



Exemple : Utilisation de phrases WHERE multiples

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.


Haut de page

x
Contrôler la sélection d'enregistrements dans les sources de données à chemins multiples

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.



x
Syntaxe : Contrôler la sélection d'enregistrements dans les sources de données multi-chemins

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ù :

SIMPLE
Comprend un segment parent dans la sortie de rapport si :
  • Au moins un enfant réussit à ses conditions de présélection.

    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.

  • Il manque un enfant référencé sur un chemin, mais l'enfant est facultatif.

    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
COMPOUND
affiche un parent dans la sortie de rapport s'il a tous les enfants nécessaires. Les tests , WHERE ou IF sur différents chemins sont traités comme s'ils étaient connectés par un opérateur AND. C'est-à-dire, tous les chemins doivent réussir les tests de présélection pour que le parent soit inclus dans les résultats de la procédure de rapport. COMPOUND est la valeur par défaut.

Pour plus d'informations, consultez Combinaisons de MULTIPATH et SET ALL et Règles pour déterminer la nécessité d'un segment.



x
Référence : Conditions et notes d'utilisation pour MULTIPATH = COMPOUND


Exemple : Récupérer les données de différents chemins

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


x
Référence : Combinaisons de MULTIPATH et SET ALL

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.



x
Référence : Règles pour déterminer la nécessité d'un segment

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 :

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