MySQL sous-Requête à l'aide de SOMME, OÙ, GROUP_BY

Je suis un débutant (pas de données).
La version simple de mes données ==> Mon espéré pour résultat:

|boule |couleur|count| |ball |Total Blue|Total| Rouge 
------------------- ---------------------------- 
|b1 |rouge | 2 | ====> |b1| 5 | 2 | 
|b1 |bleu | 3 | |b2| 3 | 1 | 
|b1 |bleu | 2 | 
|b2 |rouge | 1 | 
|b2 |bleu | 3 | 

Je veux de la saisie de chaque boule (b1, b2, etc).
Le nombre total d'occurrence de chaque couleur pour chaque balle.
Il y a plusieurs entrées pour chaque couleur de chaque boule (dans mon monde réel des données).
Mais ici, je montre plusieurs entrées pour le bleu #1-balles seulement.

Je peux facilement le faire:

SELECT ball, 
SUM(count) AS 'Total Blue'
FROM t1
WHERE color = 'blue'
GROUP BY ball

Pour obtenir le premier (bon) résultat:

|boule |Total Bleu| 
----------------- 
|b1 | 5 | 
|b2 | 3 | 

Pour aller plus loin, je pense que j'ai besoin d'une sous-requête.
Mais je n'ai pas été en mesure d'obtenir la sous-requête à traiter de la même manière que la requête courante.

Ci-dessous est le plus proche du résultat que j'ai obtenu jusqu'à présent (simple tentative):

SELECT ball, 
SUM(count) AS 'Total Blue',
(SELECT SUM(count) FROM t1 WHERE color = 'red') AS 'Total Red'
FROM t1 
WHERE color = 'blue'
GROUP BY ball

J'obtiens ceci:

|boule |Total Blue| Total| Rouge 
--------------------------- 
|b1| 5 | 3 | 
|b2| 3 | 3 |

Total Rouge indique le total de toutes les boules rouges, indépendamment de la boule numéro.

Ce plus impliqués sous-requête (pour le rouge) produit exactement le même résultat:

(SELECT SUM(cc) FROM 
(SELECT DISTINCT count AS cc FROM t1  WHERE color = 'red') AS dd )
AS 'Total Red'

J'ai ajouté du GROUPE PAR cette sous-requête pour pas plus d'effet.
C'est aussi proche que j'ai pu obtenir.
De nombreux autres essais ont donné une variété de résultats.

OriginalL'auteur Paul Quesada | 2012-08-29