bonjour,
j'ai un petit probléme en ce qui concerne une procedure.
j'ai des taches qui ont des commandes et ses commandes ont des factures.
je voudrais calculer l'engagé = le montant des commandes - le montant des factures pour une tache.
description de mes tables:
tache: id_tache
commande: num_commande,nombre, taux, id_tache
factrue: num_fact, nombre, taux, num_commande
mes procédures:
1) DROP procedure IF EXISTS engage_d_une_commande |
create procedure engage_d_une_commande
(
id int
)
begin
select c.taux*c.nombre-sum(f.taux * f.nombre)
from facture f, commande c
where f.num_cde=c.num_commande
and num_cde=id
and validee=1
group by num_cde ;
end ;|
call engage_d_une_commande(1)|
cette procédure fonctionne et me renvoie l'engagé d'une commande (montant de la commande - montant des factures)
2) DROP procedure IF EXISTS engage_d_une_tache |
create procedure engage_d_une_tache
(
id int
)
begin
select c.taux*c.nombre-sum(f.taux * f.nombre)
from facture f, commande c, tache t
where f.num_cde=c.num_commande
and t.id_tache=c.id_tache
and c.id_tache=id
and validee=1
and cloturee=0
group by c.id_tache, c.num_commande;
end ;|
call engage_d_une_tache(1)|
me donne 2 montants (24 et 22) et quand je veux faire une somme de ce qui est dans le select (24+22) 46 cela me donne une erreur: invalid use of group fonction
autrement j'ai pensé utiliser un curseur qui permettrait de sélectionner toutes les commandes d'une tache et d'appeler ensuite la procédure engage_d_une_commande pour chaque commande de la tache, mais je ne sais pas comment appeler une procédure dans une fonction
j'espére que j'ai était claire dans mes explications
merci
Partager