2012-04-11 4 views
1

Ich habe zwei Tabellen in MySQL-DatenbankZählen Zeilen aus der zweiten Tabelle

Gruppen

id|name 
_______ 
1 |red 
2 |blue 
3 |green 
4 |white 

und Benutzer

id|name |group 
_______________ 
1 |joe |1 
2 |max |1 
3 |anna |2 
4 |lisa |2 

So ... joe und max sind in der "roten" Gruppe Anna und Lisa sind in der "blauen" Gruppe.

Wie kann ich einfache Auflistung von Gruppen machen, die die Anzahl der Personen in dieser Gruppe Zum Beispiel

red - 2 
blue - 2 
green - 0 
white - 0 

Antwort

0

Geben Sie diesem einen Versuch im Zusammenhang dont haben:

select g.name, count(u.id) from groups g 
left join users u on g.id = u.group 
group by g.id, g.name 
1

überprüfen, ob das funktioniert ....

SELECT COUNT(*), groups.name FROM groups, users WHERE users.group=groups.id GROUP BY groups.name 

UPDATE enthalten würde

SELECT groups.name, COUNT(users.*) FROM groups LEFT JOIN users 
ON groups.id=users.group GROUP BY groups.name 

dies die Farben halten, auch wenn sie einen beliebigen Namen

0

try this

SELECT COUNT(g.id) as count, g.name 
FROM groups as g 
LEFT JOIN users as u 
ON u.group = g.id 
GROUP BY g.id 
1

meisten die anderen Antworten grundsätzlich korrekt sind, aber vergessen ein wichtiges Detail: GROUP ist ein reserviertes Wort in SQL, daher muss Ihr Spaltenname mit Escapezeichen versehen sein:

SELECT groups.name, COUNT(*) AS total_members 
FROM groups 
LEFT OUTER JOIN users 
ON users.`group` = groups.id 
GROUP BY groups.id 
0

SELECT g.*, COUNT(DISTINCT u.id) FROM `groups` g 
INNER JOIN `users` u on g.id = u.group 
GROUP BY u.id 
0

arbeiten vielleicht sollte diese

SELECT g.name, COUNT(u.id) AS Totoal 
FROM `groups` g 
INNER JOIN `users` u ON g.id = u.group 
GROUP BY g.id 

arbeiten Dies sollte