2010-09-24 4 views
9

La question est simple: Je veux faire:Comment SUM() plusieurs sous-requêtes dans MySQL?

SELECT SUM ((... une sous-requête qui retourne plusieurs lignes avec une seule valeur int ...)) AS total;

Comment est-ce que je ferais cela? J'obtiens une erreur disant que la sous-requête renvoie plus d'une ligne. Je dois l'avoir dans une sous-requête.

Répondre

1

Ne pourriez-vous pas faire l'agrégation au sein de la sous-requête?

SELECT 
    (SELECT SUM(...) ...) AS total, 
    ... 

(non testé!)

+0

Pas parce que j'utilise un GROUP BY et qu'il somme donc trop de lignes. – Tower

12

est ici une approche qui devrait fonctionner pour vous:

SELECT SUM(column_alias) 
FROM (select ... as column_alias from ...) as table_alias 

Et voici un exemple fictif spécifique pour montrer l'approche en action:

select sum(int_val) 
from (
    select 1 as int_val 
    union 
    select 2 as int_val 
    union 
    select 3 as int_val 
) as sub;