Bonjour,
Le titre est flou mais je ne suis pas certain du terme le plus apte à résumer ma question (d'instinct j'aurais parlé de jointure récursive avec une table, mais je ne sais pas si ça existe).
Pour résumer ma question, voici une mise en contexte. J'ai 2 tables :
la première présente des données telles qu'elles sont définies à un instant T
la seconde présente l'historique de ces données (s'il y en a)
Pour ceux qui connaissent j'ai en fait un parcellaire de 2010 d'une part (avec l'identifiant parcellaire unique) et la donnée de filiation qui retrace l'évolution de ces parcelles (traîté pour avoir un champ de parcelles mères et un champ de parcelles filles).
Ce que je voudrais, pour chaque entité de mon cadastre, c'est trouver l'identifiant cadastral de la dernière évolution connue.
Pour illustrer, voici mes tables :
Je voudrais joindre ma table 2 à ma table 1 jusqu'à ce qu'il n'y ait plus de valeurs du champ fille à joindre. Ce qui me donnerais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 table 1 parc_2010 --------- A C table 2 meres | filles -------|-------- A | B C | D D | E
Est-ce possible dans postgreSQL (j'utilise la version 14 en local sur un PC) ? Si oui, comment est-ce que ça se met en place ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5parc_2010|derniere_fille ---------|-------------- A |B C |E
D'avance merci pour vos lumières.
EDIT : Après quelques recherches j'ai trouvé des choses qui semblent parfaitement coller au résultat que je souhaite, et notamment ce type de proposition.
Seulement voilà, j'ai quelques paramètres qui viennent compliquer tout ça :
- une parcelle mère peut avoir plusieurs parcelles filles (division parcellaire) ; et inversement, une parcelle fille peut avoir plusieurs parcelles mères (remembrement)
- une parcelle mère (ou un ensemble de parcelles mères) peuvent n'avoir aucune parcelle fille (valeur NULL), correspondant à une disparition de parcelle (versée au domaine public) ; et inversement, une parcelle fille (ou un ensemble de parcelles filles) peuvent n'avoir aucune parcelle mère (valeur NULL), correspondant à une création de parcelle
- Dans ma donnée de base j'ai donc 2 champs, meres et filles, composés d'une concaténation de parcelles
De façon plus détaillée, ma table ressemble donc à ça :
Pour compléter ma question, faut-il que je fractionne l'ensemble de mes champs en lignes (j'ai déjà expérimenté la fonction regxp_split_to_table qui fonctionne particulièrement bien) pour faire une jointure récursive ou existe-t-il un moyen de faire une jointure en cherchant une chaîne de caractères dans un entité par exemple ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 meres | filles -------|-------- A | B C,D | E F | G,H,I H,I | NULL NULL | A
D'avance merci.
Partager