2009-12-15 2 views
0

J'utilise des requêtes similaires (10) requêtes suivantes (modifiées) pour trouver la sommerequête MySQL pour trouver somme de noms différents

SELECT sum(amount) AS amount 
    FROM `students` 
WHERE sex='M' 
    && name in ('salil', 'anil', 'gaikwad') 

... et:

SELECT sum(amount) AS amount 
    FROM `students` 
WHERE sex='M' 
    && name in ('salil1', 'anil1', 'gaikwad1') 

je veux faire une seule requête des 10 requêtes ci-dessus. c'est possible?

+0

Qu'est-ce que vous faites avec les 10 requêtes - sont leurs sommes à combiner, comparé? –

Répondre

1

Vous pouvez utiliser UNION

SELECT 'subset1', sum(amount) AS amount FROM students WHERE sex='M' and name in ('salil', 'anil', 'gaikwad') 
UNION 
SELECT 'subset2', sum(amount) AS amount FROM students WHERE sex='M' and name in ('salil1', 'anil1', 'gaikwad1') 

Cependant, vous interrogez probablement ces ensembles d'étudiants pour une raison, peut-être anil, Salil et Gaikwad êtes un groupe d'étudiants. Si c'est le cas, vous devriez le refléter dans la structure de la base de données, pas dans votre code.

Vous pouvez ajouter un champ « Sous-ensemble » ou « Groupe » ou quel qu'il soit, à la table des étudiants, il ressemble à ceci:

name group_id 
salil 1 
anil 1 
gaikwad 1 
salil1 2 
... 

Ensuite, vous pouvez faire

select group_id, sum(amount) from students group by group_id 
1

Essayez quelque chose comme ça

SELECT sum(amount) AS amount 
FROM students INNER JOIN 
     (SELECT 'salil%' Val UNION SELECT 'anil%' UNION SELECT 'gaikwad%') s ON students.NAME LIKE s.Val 
WHERE sex='M' 

Cela vous permet d'utiliser les valeurs dans le deuxième tableau à se joindre à COMME.

+0

Je soupçonne que 'salil1' n'est pas vraiment un nom d'étudiant, juste un exemple malheureux de l'OP. –

Questions connexes