Bonjour à tous,

Dans ma base de données j'ai 3 tables : GROUPE, ACTION et ACTION_DONNEE.

ACTION a pour champs idenMin (clée primaire), num_action (clée primaire), et clée. Clée est la concaténation de deux champs : num_iden et num_groupe (tous deux appartenant à la table groupe).

ACTION_DONNEE a pour champs idenMin (clée primaire), num_action (clée primaire), num_donnee (clée primaire), type_action et valeur


GROUPE a pour champs num_iden (clée primaire) , num_groupe (clée primaire), type_groupe.


Suite à l'ajout de champs dans la table GROUPE (nbr_entreeGroupeTM, nbr_entreeGroupeH, nbr_entreeGroupeF ), je souhaiterais mettre à jour cette dernière. Les données utilisées pour mettre à jour ces nouveaux champs correspondent à des enregistrement situés dans la table EVT_DONNEE (valeur).

Ainsi, pour mettre à jour un des nouveaux champs, j'execute cette requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
update GROUPE 
set nbr_entreeGroupeH = (select d.valeur 
                from action e, groupe b,action_donnee d,action_attribut a
                where e.clée = (b.num_iden || '|' || b.num_groupe)
                and e.idenMin = d.idenMin 
                and e.num_action = d.num_action
                and d.type_action = a.type_action
                and b.type_groupe not in ('MIN')
                and b.type_groupe not in ('GRO')
                and d.type_action in(1))
where num_groupe = (select num_groupe
                from action e, groupe b,action_donnee d,action_attribut a
                where e.clée = (b.num_iden || '|' || b.num_groupe)
                and e.idenMin = d.idenMin 
                and e.num_action = d.num_action
                and d.type_action = a.type_action
                and b.type_groupe not in ('MIN')
                and b.type_groupe not in ('GRO')
                and d.type_action in(1))
and num_iden = (select b.r_siret 
                from action e, groupe b ,action_donnee d,action_attribut a
                where e.clée = (b.num_iden || '|' || b.num_groupe)
                and e.idenMin = d.idenMin 
                and e.num_action = d.num_action
                and d.type_action = a.type_action
                and b.type_groupe not in ('MIN')
                and b.type_groupe not in ('GRO')
                and d.type_action in(1))
ce qui fonctionne trés bien. Le probléme intervient lorsque plusieurs GROUPE existent dans la base de données. Je pense donc devoir utiliser une boucle WHILE mais je ne sais comment m'y prendre.

Quelqu'un pour m'apportait son aide?

Merci.