Bonsoir!
Je n'arrive pas à faire ce dont j'ai besoin... (et je débute avec PostgreSQL, et le SQL d'une manière générale...).
Voici la situation :
- j'ai une table qui stocke des couples d'identifiants (tags) synonymes
- chaque nouveau couple de tags renseigné est affublé d'un identifiant propre à ce couple
- un seul tag peut avoir de nombreux synonymes sur plusieurs lignes
- à chaque nouveau couple de tags il est possible que j'associe des groupes de tags synonymes jusque-là dissociés (car il manquait un couple de tags observés pour faire le lien)
- J'ai besoin de générer un identifiant unique de l'objet qui porte ces nombreux tags
Par Exemple :
La table de synonymes, dont les enregistrements sont ajoutés par lot lors d'importations, est structurée de cette manière :
id | tag1 | tag2
1 | G0001 | G0001
2 | P0856 | P0856
3 | G4596 | G4596
4 | A0023 | A0023
5 | Z9999 | Z9999
6 | P0856 | G4596
Les 5 premiers tuples identifient des tags uniques.
Le tuple 6 associe les tuples 2 et 3... donc une petite requête met a jour en :
id | tag1 | tag2
1 | G0001 | G0001
2 | P0856 | P0856
3 | G4596 | G4596
4 | A0023 | A0023
5 | Z9999 | Z9999
2 | P0856 | G4596
Mais comment faire pour associer dans le même temps le tag G4596?
id | tag1 | tag2
1 | G0001 | G0001
2 | P0856 | P0856
2 | G4596 | G4596
4 | A0023 | A0023
5 | Z9999 | Z9999
2 | P0856 | G4596
Et lorsque ce sont des cascades beaucoup plus longues qui s'opèrent... là c'est la galère!
par ex en ajoutant encore :
id | tag1 | tag2
7 | A0023 | G0001
8 | G4596 | G0001
Je suppose qu'il me faut passer par des fonctions... que pour le coup je ne maîtrise pas!
Pour info ma table fait plus de 70000 lignes... donc des cascades sur plusieurs niveaux, il y en a!
Merci beaucoup à ceux qui pourraient me filer un coup de pouce!
Pat.
Partager