Vous devez vous identifier pour créer des messages et des sujets.

[Résolu] logique joint avec clés sur 1er et 2ème fichier

Bonjour,

Il n'est pas possible de créer via les DDS un logique joint sur 2 physiques avec des clés sur le 1er physique et des clés sur le 2eme physique.

Par exemple :
fichier F1 avec code magasin + code article
fichier F2 avec code article + code regroupement
je veux le logique L1 avec les colonnes code magasin, code article, code regroupement et les clés code magasin + code regroupement.

Est-il possible de créer un tel logique via SQL et comment?

Create view ne permet pas de créer un logique avec clés
Creta index ne permet pas de joindre 2 tables

Par avance merci pour vos réponses.

Alain.

Tu pourras effectivement le faire avec une vue SQL, mais comme tu le dis, une vue n'est pas indexée.
Ce serait faisable à travers une MQT (Materialized Query Table) -> Un PF issu de la jointure ou l'on pourra y attacher des index, mais les données ne seront pas en temps réel, il faudra rafraîchir les données de temps en temps. Plutôt utilisé dans les DataWarehouse.
Maintenant, je ne vois pas pourquoi tu ne veux pas utiliser du SQL plutôt que du READ/SETLL/CHAIN (trop contraignant) sur ta vue, voire faire ta jointure dans ton RPG

Puisque tu parles de DDS, tu peux parfaitement créer un logique multiformat avec les DDS. Je reprends ici ton exemple.

Si (codmag et codart) et (codart et codreg) sont de même nature (alphanum, packé, etc ...) et de même longueur, tu peux faire dans le même logique :
R Format1 PFILE(PF1)
K codmag
K codart
R Format2 PFILE(PF2)
K codart
K codreg

Si (codmag et codart) sont de même même nature mais (codart et codreg) sont différents en longueur, tu peux faire dans le même logique :
R Format1 PFILE(PF1)
K codmag
K codart
R Format2 PFILE(PF2)
K codart
K *NONE
K codreg

Si (codmag et codart) et (codart et codreg) sont de même nature mais différents en longueur, tu peux aussi faire dans le même logique :
R Format1 PFILE(PF1)
K codmag
K codart
R Format2 PFILE(PF2)
codreg
regcod i sst(codreg 1 5)
K codart
K regcod

En fait, il faut que les clés soient alignées entre les formats, qu'elles aient les mêmes longueurs et les mêmes natures.
Tu peux jouer avec K *NONE pour les aligner, ou SST pour réduire leur longueur mais toujours de façon que l'ensemble des clés soit cohérent d'un format à l'autre.

Dans ton programme, tu pourras lire le fichier logique multiformat ou bien l'un des formats ou encore chaque format à tour de rôle, au choix.
Si tu lis le fichier, les enreg te seront délivrés dans ton buffer dans l'ordre des formats et des clés, càd format1 puis format2.
Si tu lis un format particulier, évidemment tu n'auras accés qu'aux infos de ce format.

sniffff, dommage, c'était l'occasion d'en convertir un à SQL :rolleyes:

Certes ! Mais il fallait bien éclairer la lanterne des lecteurs en leur disant que les DDS ont tout de même des trésors cachés ou méconnus. Pourquoi se priver d'outils si ceux-ci peuvent faire l'affaire ? Souviens-toi que c'est dans les vieux pôts qu'on fait les bonnes soupes ! 😉

Merci pour ces renseignements.

Je vais surement faire du SQL.

Alain.