Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
Comment faut-il s'y prendre afin de créer une clé unique composée de plusieurs champs ?
Voici un extrait des chargements de mes deux tables :
Table 1 :
Directory;
LOAD
[N° de commande],
[Grpe.acheteurs cmde],
[Centre de coûts cmde],
[Lib.c.coûts cmde],
[Créé par],
[Nom complet créé par],
[Type commande],
[N° article commande]
FROM
[test.xlsx]
(ooxml, embedded labels, table is [table 1]);
Table 2 :
Directory;
LOAD
Sté,
[org ciale],
DA,
PF,
Energie,
N°Pièce,
Référence,
[Date base],
[Cde achat],
Fournisseur,
[Nom frs],
[Cde vente],
[Montant HT],
[Montant TTC],
Observation,
OK,
[Date Règlt],
GR,
DMR,
[Nom du demandeur],
Créateur,
[Date de saisie],
Portefeuille,
[Lieu de livraison],
[type de livraison],
Motif,
[Date d'extraction],
Article
FROM
[test.xlsx]
(ooxml, embedded labels, table is [table 2]);
Je voudrais lier la table 1 et 2 grâce aux deux champs en rouge, à savoir N° de commande] et [N° article commande] pour la table 1,
DMR et Article pour la table 2.
Une idée de comment m'y prendre ?
Merci d'avance de votre aide.
Il faut créer un nouveau champs dans tes 2 tables avec le même nom
Table 1
AutoNumber([N° de commande] & '_' & [N° article commande], 'CommandeArticle') as %key_commande_article
Table 2
AutoNumber(DMR & '_' & Article, 'CommandeArticle') as %key_commande_article
Ensuite, si une des 2 tables contient l'ensemble des combinaisons des champs de base, conserve les champs de base dans cette table, tu peux les supprimer de l'autre table.
Si les 2 tables contiennent des combinaisons n'existant pas dans l'autre table, Il faudra créer une table intermédiaire qui contiendra les champs de base et la clé %key_commande_article de toutes les combinaisons distinctes des 2 tables et tu dois supprimer les champs de base des 2 tables.
Il faut créer un nouveau champs dans tes 2 tables avec le même nom
Table 1
AutoNumber([N° de commande] & '_' & [N° article commande], 'CommandeArticle') as %key_commande_article
Table 2
AutoNumber(DMR & '_' & Article, 'CommandeArticle') as %key_commande_article
Ensuite, si une des 2 tables contient l'ensemble des combinaisons des champs de base, conserve les champs de base dans cette table, tu peux les supprimer de l'autre table.
Si les 2 tables contiennent des combinaisons n'existant pas dans l'autre table, Il faudra créer une table intermédiaire qui contiendra les champs de base et la clé %key_commande_article de toutes les combinaisons distinctes des 2 tables et tu dois supprimer les champs de base des 2 tables.
Super je te remercie ça marche impeccable !
Bonjour,
Perso je fais uniquement la concaténation sans utiliser AutoNumber.
est ce que c'est plus optimal d'utiliser cette fonction donc ?
Et a quoi sers le %Key devant le nom du champ ?
Ou c'est juste une convention de nommage ?
Merci.
Est ce que c'est plus optimal d'utiliser cette fonction donc ?
Si tu fais uniquement la concaténation, tu as des clés compréhensible (lisible).Mais sachant que tu conserves chaque valeurs distinctes de ta clé en mémoire, c'est moins couteux de conserver des chiffres que des chaines de caractère. C'est d'autant plus vrai si elles ont un nombre élevé de caractère et/ou si tu en as un nombre élevé de clé distincte.
Et a quoi sers le %Key devant le nom du champ ?
Ou c'est juste une convention de nommage ?
C'est une convention de nommage sur les clé technique (non utilisée dans l'interface) pour pouvoir les cacher aux utilisateurs (comme les champs système) en utilisant l'instruction suivante dans le script de chargement : SET HidePrefix ='%' ;