ops...

ho dimenticato una cosa:
l'id della causale (1, 2, 3, ecc) corrisponde ad un nome causale.
dunque se ha causale 1 sarà scarto
se ha causale 2 donazione ecc.

quindi ad ogni id causale corrisponde un nome

ecco perchè facevo

select sum(qta) as scarto from tabella where causale='1' AND id_prodotto=$id

e poi ripetevo

select sum(qta) as donazione from tabella where causale='2' AND id_prodotto=$id

...per ogni tipo di causale

grazie