Jointures externe et interne sous éditeur de requête

Posté par juliane le 7/3/2005 19:51:56
Bonjour,

Soit 3 fichiers HYPERFILE avec les liaisons suivantes :
PERSONNE (0,1) <-> (0,n) TYPEPERSONNE (1,1) <-> (0,n) FAMPERSONNE
Les relations sont définies sur des rubriques alpha.
Je veux obtenir la liste de toutes les personnes, qu’elles aient ou non un type de personne TYPEPER et, SI elles ont un TYPEPER, afficher le libellé de famille de TYPEPER correspondant.

Lorsque j’édite une requête avec l’éditeur sur ces trois fichiers, je me retrouve, en cochant "afficher les personnes qui n'ont pas de TYPEPER), avec les jointures réalisées de la manière suivante :
SELECT PERSONNE.NOM, PERSONNE.TYPEPER, TYPEPERSONNE.TYPEPER, TYPEPERSONNE.FAMCODE, FAMPERSONNE.FAMCODE, FAMPERSONNE.LIBELLE
FROM PERSONNE LEFT OUTER JOIN TYPEPERSONNE 
ON PERSONNE.TYPEPER = TYPEPERSONNE.TYPEPER, 
TYPEPERSONNE INNER JOIN TYPEFAMPERSONNE 
ON TYPEPERSONNE.FAMCODE = TYPEFAMPERSONNE.FAMCODE
 ORDER BY PERSONNE.NOM ASC

Normalement, cette requête devrait être correcte, non ??? puisque c'est l'éditeur qui l'a écrit.

Le problème, c’est que j’ai des enregistrements qui disparaissent, et pas toujours les mêmes.
J’ai 51 enregistrements dans mon fichier PERSONNE. Sur ceux-ci, j’en ai 25 qui ont une rubrique PERSONNE.TYPEPER = "" et 26 qui ont une valeur.
Or les 4 enregistrements qui disparaissent ont une valeur correcte pour cette rubrique, valeur qui n'empêche pas l'affichage d'autres enregistrements.
J'ai bien vérifié dans le fichier TYPEPERSONNE que tous les enregistrements ont bien une valeur FAMCODE.
Et dans le fichier FAMPERSONNE que ces valeurs existent bien.
Si je supprime la 2ème jointure avec le fichier FAMPERSONNE, tout est OK.
Dès que je la rajoute, rien ne va plus.

J'ai fait une synchronisation du projet avec l'analyse, la mise à niveau du projet, et j'ai également demandé une ré indexation des fichiers : rien n'y fait.

J'ai repassé tous mes enregistrements en modification. Après cela, les 4 enregistrements qui avaient disparu ont réapparu, et 4 nouveaux ont disparu !!!

Cela fait 2 jours que je suis dessus et je m'arrache les cheveux.

Par ailleurs, pour les lignes qui n'ont pas de valeur TYPEPER, j'ai toujours la valeur FAMPERSONNE.LIBELLE du premier enregistrement de ce fichier, alors que je devrais ne rien avoir.

Faut-il prendre des précautions particulières pour faire des relations sur des rubriques "caractères" ? J'ai regardé dans la description des rubriques de fichier (style gestion des null) mais je n'ai rien trouvé.

J'ai lu sur des forums qu'il y avait des problèmes pour faire des jointures externes multiples avec les anciennes versions ?
Les problèmes ont-il perduré en version 8 ?
Ne maîtrisant pas vraiment SQL, j'espérais pouvoir compter sur l'éditeur mais là, je ne sais plus quoi faire.

Merci à celui qui aura une idée pour m'éclairer.


Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=12&topic_id=1954&post_id=8136