Bonjour,
Voici mon problème :
- j'ai une table contenant des n° de clients.
- chaque client peut avoir de 0 à n filleul (mais un filleul ne peut avoir qu'un seul parrain)
- chaque client, qu'il soit parrain ou filleul, dispose d'un certain nombre de points-cadeaux.
- dans la table, le nombre de points-cadeaux d'un parrain comprend ses propres points, plus ceux de ses filleuls.
But :
Je cherche à récupérer, pour chaque client, le nombre de ses propres points-cadeaux.
Avec une logique humaine, c'est assez simple : on regarde quels sont les filleuls d'un parrain, on additionne les points de ces filleuls, et on soustrait le tout aux points du parrain.
Mais en Transac-SQL, c'est beaucoup plus chaud...
Si quelqu'un entrevoit une solution, je suis prenneur
Voici la structure de la table :
Pour les données, par exemple je peux avoir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE TABLE pointcadeau ( id_client int, id_parrain int, nb_point int )
- le client 1 a 1000 points, et deux filleuls (clients 3 et 4)
- le client 2 a 400 points mais pas de filleul
- le client 3 (filleul du 1) a 300 points, et a lui-même un filleul (client 5)
Pour l'instant, un SELECT de ma table me donne ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 INSERT INTO pointcadeau VALUES ( 1, 1, 1000 ) INSERT INTO pointcadeau VALUES ( 2, 2, 400 ) INSERT INTO pointcadeau VALUES ( 3, 1, 300 ) INSERT INTO pointcadeau VALUES ( 4, 1, 100 ) INSERT INTO pointcadeau VALUES ( 5, 3, 50 )
Le résultat final que je voudrais obtenir est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 id_client id_parrain nb_point --------- ---------- -------- 1 1 1000 2 2 400 3 1 300 4 1 100 5 3 50
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 id_client nb_point_reel --------- ------------- 1 600 2 400 3 250 4 100 5 50
Partager