De query gaat als volgt (onderdeel van een procedure, die vult dus de verschillende variabelen in)
SELECT
get_wage(
mPid,
SUM(`mScoreEntry`.`amount`) + IFNULL(SUM(DISTINCT(`mScoreVariable`.`amount`)), 0),
work_date,
`mSaleUnit`.`setMember`,
personid
) AS wage
FROM
`mSaleUnit`
LEFT JOIN
`mScoreVariable`
ON
`mScoreVariable`.`fk_mSCid` = scoresheet AND
`mScoreVariable`.`setMember` = `mSaleUnit`.`setMember` AND
`mScoreVariable`.`fk_pid` = personid
JOIN
`mScoreEntry`
ON
`mScoreEntry`.`fk_mSUid` = `mSaleUnit`.`mSUid` AND
`mScoreEntry`.`fk_mSCid` = scoresheet AND
`mScoreEntry`.`fk_pid` = personid
GROUP BY
mSaleUnit.setMember;De functie get_wage wordt dus aangeroepen voor elke matchende unieke setMember, precies zoals de bedoeling is? Hoe krijg ik nu het totaal van de waarde die deze functie genereert terug? Ik heb zelf meerdere opties bedacht, deze zijn echter allemaal onhandig:
[*]Subquery: kan niet, omdat er meerdere resultaten zijn
[*]Cursors: lijkt me overkill voor zoiets simpels
Eigenlijk zoek ik dus iets wat dezelfde rijen genereert als WITH ROLLUP alleen dan zonder dat ik de originele rijen te zien krijg. Ik heb heel google afgestruind naar dingen als SUPER AGGREGATE maar ik vind niets waarmee ik enkel het totaal te zien krijg.