Pb de recursivité - procedure stockee

Pb de recursivité - procedure stockee - SQL/NoSQL - Programmation

Marsh Posté le 08-02-2006 à 21:00:45    

Bonsoir a tous,
 
j'ai un petit pb serieux.
 
En fait je dispose d'une table ds laquelle j'ai 3 colonnes
la première colonne etant celle des peres, la seconde celle des fils et la 3e des caracteristiques (une quantité par exple).
 
le pb c que 1 pere est tres souvent fils aussi.
 
ce que je veux faire c'est additionner ces caracteristiques  
 
exple:
 
pere | fils | qte
A     | B   | 3
A     |C    | 11
A     | D   | 5
B     | F   | 4
G     | I   | 7
 
 
on voit tres bien qu'il ya 3 B, et ds 1 B, il ya 4 F,
donc au final on a 12 F.
 l'idée serait d'avoir un tableau ou on aurait
 
F | 12
I  | 7
...
 
 
 
Je suis preneur de ttes les idees
j'ai pensé faire une procedure stockee
 
Merci d'avance

Reply

Marsh Posté le 08-02-2006 à 21:00:45   

Reply

Marsh Posté le 08-02-2006 à 21:45:53    

sous Oracle ?
 
Si c'est le cas, c'est faisable en SQL je pense, quelques idées ici :
 
http://asktom.oracle.com/pls/ask/f [...] 4185613870

Reply

Marsh Posté le 08-02-2006 à 22:53:00    

Beegee a écrit :

sous Oracle ?
 
Si c'est le cas, c'est faisable en SQL je pense, quelques idées ici :
 
http://asktom.oracle.com/pls/ask/f [...] 4185613870


 
 
oui ss oracle,
 
merci pour le lien je vais essayer de m'y inspirer
 
si tu as autre chose...

Reply

Marsh Posté le 09-02-2006 à 09:56:01    

Je crois que j'ai la requête qu'il te faut :
 

Code :
  1. DROP TABLE matable
  2. Table dropped
  3. CREATE TABLE matable
  4. (pere VARCHAR(20),
  5. fils VARCHAR(20),
  6. qte NUMBER(9))
  7. Table created
  8. INSERT INTO matable VALUES ('A', 'B', 3)
  9. 1 row inserted
  10. INSERT INTO matable VALUES ('A', 'C', 11)
  11. 1 row inserted
  12. INSERT INTO matable VALUES ('A', 'D', 5)
  13. 1 row inserted
  14. INSERT INTO matable VALUES ('B', 'F', 4)
  15. 1 row inserted
  16. INSERT INTO matable VALUES ('G', 'I', 7)
  17. 1 row inserted
  18. INSERT INTO matable VALUES ('J', 'K', 8)
  19. 1 row inserted
  20. INSERT INTO matable VALUES ('J', 'L', 9)
  21. 1 row inserted
  22. INSERT INTO matable VALUES ('K', 'M', 2)
  23. 1 row inserted
  24. INSERT INTO matable VALUES ('K', 'N', 1)
  25. 1 row inserted
  26. COMMIT
  27. Commit complete
  28. SELECT * FROM matable
  29. PERE                 FILS                        QTE
  30. -------------------- -------------------- ----------
  31. A                    B                             3
  32. A                    C                            11
  33. A                    D                             5
  34. B                    F                             4
  35. G                    I                             7
  36. J                    K                             8
  37. J                    L                             9
  38. K                    M                             2
  39. K                    N                             1
  40. 9 rows selected
  41. SELECT fils,
  42.        (SELECT EXP(SUM(LN(qte)))
  43.         FROM matable t2
  44.         START WITH t2.fils = t1.fils
  45.         CONNECT BY PRIOR t2.pere = t2.fils ) qte_totale
  46. FROM (SELECT DISTINCT fils
  47.       FROM matable
  48.       CONNECT BY PRIOR fils = pere) t1
  49. WHERE NOT EXISTS (SELECT NULL FROM matable t3 WHERE t3.pere = t1.fils)
  50. FILS                 QTE_TOTALE
  51. -------------------- ----------
  52. C                            11
  53. D                             5
  54. F                            12
  55. I                             7
  56. L                             9
  57. M                            16
  58. N                             8
  59. 7 rows selected

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed