2010-03-06 8 views
2

dans la table de mes membres J'aimerais un résumé de toutes les personnes différentes dans les "emplacements" 1 - 7 du nombre de personnes qui sont en ligne et hors ligne.Groupe MySQL par résumé

SELECT location, COUNT(*) FROM members GROUP BY location; 

qui retourne:

1 10 
2 5 
3 4 
4 12 
5 6 
6 3 
7 19 

Je voudrais un COUNT pour les membres ayant un statut de 0 (hors ligne) et un état de 1 (en ligne). Comment puis-je faire cela?

Répondre

4
SELECT location, status, COUNT(*) FROM members GROUP BY location, status 

Comme une rangée:

SELECT 
    location, 
    COUNT(status) - SUM(status) as offline, 
    SUM(status) as online 
FROM members 
GROUP BY location 
+0

cela fonctionne, mais il crée deux lignes pour chaque emplacement, ce qui rendrait difficile dans mon php que j'imprime ces données dans un tableau. – Juddling

+0

@Juddling: Voir mise à jour. –

+0

vous êtes un génie! – Juddling

2

emplacement SELECT, état, COUNT (*) à partir de membres du groupe par emplacement, l'état

+0

+1 pour la plus rapide. –