Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour à tous,
Je travaille sur un projet qui me dépasse un peu, et j'ai une problème sur la conception des données dans le script.
Peut être pourriez-vous m'aider.
J'ai une table comme celle-ci :
| Article | Caractéristique | Valeur caractéristique | 
|---|---|---|
| 40312 | PHOTOCONNA | USB2 TYPE A M | 
| 40312 | PHOTOCONNB | USB2 TYPE A F | 
| 40312 | LONGCABLE | 12 | 
| 40312 | COULEUR | Blanc | 
| 40312 | OR | Non | 
| 40312 | CONFIG | Configurateur | 
Je souhaiterai à partir du script obtenir ceci :
| CART | PHOTOCONNA | PHOTOCONNB | LONGCABLE | COULEUR | OR | CONFIG | 
|---|---|---|---|---|---|---|
| 40312 | USB2 TYPE A M | USB2 TYPE A F | 12 | Blanc | Non | Configurateur | 
De plus en fonction de l'article (clé) il y a plus ou moins de caractéristiques (ici 6 caractéristiques), mais cela peu aller de aucune à 10.
Est-ce possible simplement ?
Merci pour toute aide que vous pourrez m'apporter.
Christophe
Bonjour tu peux faire ça :
original:
 LOAD * INLINE [
     Article, Caractéristique, Valeur caractéristique
     40312, PHOTOCONNA, USB2 TYPE A M
     40312, PHOTOCONNB, USB2 TYPE A F
     40312, LONGCABLE, 12
     40312, COULEUR, Blanc
     40312, OR, Non
     40312, CONFIG, Configurateur
     50201, PHOTOCONNA, USB3 TYPE A Z
     50201, PHOTOCONNB, USB4 TYPE A U
     50201, LONGCABLE, 24
     50201, COULEUR, Blanc
     50201, OR, OUI
     50201, CONFIG, Configurateur
 ];
 
 temp1:
 generic load * resident original;
 
 result:
 load distinct Article resident original;
 
 drop table original;
 
 FOR i = 0 to NoOfTables()
 TableList:
 LOAD TableName($(i)) as Tablename AUTOGENERATE 1
 WHERE WildMatch(TableName($(i)), 'temp1.*');
 NEXT i
 
 FOR i = 1 to FieldValueCount('Tablename')
 LET vTable = FieldValue('Tablename', $(i));
 LEFT JOIN (result) LOAD * RESIDENT $(vTable);
 DROP TABLE $(vTable);
 NEXT i
 
 drop table TableList; 
Bonjour,
Combien y a t-il de caractéristiques distinctes ?
Bonjour tu peux faire ça :
original:
 LOAD * INLINE [
     Article, Caractéristique, Valeur caractéristique
     40312, PHOTOCONNA, USB2 TYPE A M
     40312, PHOTOCONNB, USB2 TYPE A F
     40312, LONGCABLE, 12
     40312, COULEUR, Blanc
     40312, OR, Non
     40312, CONFIG, Configurateur
     50201, PHOTOCONNA, USB3 TYPE A Z
     50201, PHOTOCONNB, USB4 TYPE A U
     50201, LONGCABLE, 24
     50201, COULEUR, Blanc
     50201, OR, OUI
     50201, CONFIG, Configurateur
 ];
 
 temp1:
 generic load * resident original;
 
 result:
 load distinct Article resident original;
 
 drop table original;
 
 FOR i = 0 to NoOfTables()
 TableList:
 LOAD TableName($(i)) as Tablename AUTOGENERATE 1
 WHERE WildMatch(TableName($(i)), 'temp1.*');
 NEXT i
 
 FOR i = 1 to FieldValueCount('Tablename')
 LET vTable = FieldValue('Tablename', $(i));
 LEFT JOIN (result) LOAD * RESIDENT $(vTable);
 DROP TABLE $(vTable);
 NEXT i
 
 drop table TableList; 
Bonjour Almamy,
Il y a 32 caractéristiques possibles, mais à terme cela peu évoluer.
Merci
Christophe
Bonjour Mambi,
Je n'ai pas tout compris au code, mais cela fonctionne très bien.
Merci beaucoup
Christophe