Comment remonter dans la hiérarchie pour afficher la bonne valeur ?

Fermé
venoom Messages postés 3 Date d'inscription mardi 2 avril 2019 Statut Membre Dernière intervention 5 avril 2019 - 2 avril 2019 à 13:10
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 5 avril 2019 à 20:04
Bonjour tout le monde,

Je vais faire de mon mieux pour que vous puissiez me comprendre car le sujet est pas simple.

contexte :

j'ai une table CUSTOMER

Cette table comporte plusieurs colonnes dont 3 sur lesquelles je dois me baser, à savoir :
customer_code | customer_parent | customer_payer

Les payeurs, qui sont en bas de la hiérarchie, sont rattaché à un parent, qu'on appel les demandeurs. les demandeurs sont un niveau au dessus des payeurs, logique.
exemple d'un payeur :
customer_code | customer_parent | customer_payer
990 | 991 | 990

les demandeurs, eux, peuvent avoir un autre demandeur au dessus d'eux ou pas du tout
par exemple lorsqu'ils ont personne au dessus :
customer_code | customer_parent | customer_payer
991 | | 990
et s'il ont un autre demandeur au dessus et bien dans customer_parent, on aura le code du demandeur qui sera au dessus dans la hiérarchie etc etc

Maintenant voici la problématique :

certains payeurs devraient avoir un parent, mais la table n'affiche rien... donc j'ai fais une requête SQL qui permettait de les rattacher au bon parent.
Mais certains payeurs, on plusieurs parent... et en faite il faudrait que j'arrive a remonter encore une fois dans la hiérarchie pour pouvoir lui attribuer le bon parent.

par exemple :
le payeur 800 pourrait avoir plusieurs parent 801, 802 et 803, et ces trois parents pourraient avoir un parent en commun, au dessus dans la hiérarchie, le 700 et c'est celui ci qu'il faudrait donc rattacher au payeur 800.
je ne sais pas si je me suis fais comprendre, mais en gros remonter dans la hiérarchie, jusqu'à se qu'il n'y ai plus qu'un parent et le rattacher au payeur. Plutôt que de lui en donner un au hasard parmi les 3 premier de la hiérarchie.

1 réponse

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
2 avril 2019 à 19:10
bonjour,
à quoi sert la colonne customer_payer?
peux-tu donner le contenu de tes tables en fonction de ton exemple? bien sûr le contenu au départ, et celui que tu aimerais avoir après ta requête.
0
venoom Messages postés 3 Date d'inscription mardi 2 avril 2019 Statut Membre Dernière intervention 5 avril 2019
5 avril 2019 à 12:39
Bonjour,

customer_payer sont les magasin, particulier etc qui paye, et les demandeur son les groupe magasin, pour résumer, qui décide quel magasin, donc payeur, doit payer.

dans la table tu as plusieurs colonnes, mais celles qui m’intéresse et que je veux utiliser pour faire ma hiérarchie sont :
customer_code | customer_parent | customer_payer

imaginons le client payeur 900 n'a qu'un demandeur 800, on aurai pour le client en question :
customer_code | customer_parent | customer_payer
900 (code Payeur) | 800 (sa hierarchie n+1) | 900 (puisqu'on est sur la ligne du payeur donc logique qu'on retrouve son code aussi ici)

mais imaginons qu'un payeur 900 a plusieurs demandeurs 800, 801, 802, lequel choisir dans se cas ? et bien c'est la qu'il faudrait remonter encore d'un niveau dans la hiérarchie et récupérer le customer_parent, qu'ils auront en commun, de ces trois demandeurs et le mettre dans le customer_parent du client 900
exemple :
N+2 : customer_code | customer_parent | customer_payer
802 700
801 700
800 700

N+1 : customer_code | customer_parent | customer_payer
802 900
801 900
800 900

Client payeur : customer_code | customer_parent | customer_payer
900 700 900

en gros aller chercher la hierarchie n+2 pour récupérer le customer_parent que les trois N+2 ont en commun pour aller le mettre dans customer_parent du client payeur


merci d'avance pour vos réponses
0
venoom Messages postés 3 Date d'inscription mardi 2 avril 2019 Statut Membre Dernière intervention 5 avril 2019
5 avril 2019 à 12:43
*
N+2 : customer_code | customer_parent | customer_payer
802 (customer_code) 700 (customer_parent)
801 700
800 700

N+1 : customer_code | customer_parent | customer_payer
802 (customer_parent) 900 (customer_payer )
801 900
800 900
*
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > venoom Messages postés 3 Date d'inscription mardi 2 avril 2019 Statut Membre Dernière intervention 5 avril 2019
5 avril 2019 à 20:04
je ne vois pas où tu as expliqué à quoi sert la colonne customer_payer.
tu n'as pas donné d'exemple avant/après, comme j'ai demandé.
tu réexpliques ce que tu avais expliqué au début, sans être plus précis ni plus concret. inutile de donner plus d'explications, montre simplement un exemple du contenu de ta table avant le travail et du contenu après le travail.
0