2017-06-12 3 views
-1
funktioniert

Dies ist meine Abfragemysql: Gruppe von nicht

SELECT r.stars 
FROM ratingstar r 
INNER JOIN proposals p ON p.jobid = r.jobid 
INNER JOIN us_signup u ON u.id = p.userid 
WHERE r.type = 'user' 
AND u.id = '54' 
LIMIT 0 , 30 

kehrt

Sterne = [2,3,4]

aber ich will es count = 3 zurückzukehren und Sterne = 9

ich versuchte

SELECT count(*), count(r.stars) 
FROM ratingstar r 
INNER JOIN proposals p ON p.jobid = r.jobid 
INNER JOIN us_signup u ON u.id = p.userid 
WHERE r.type = 'user' 
AND u.id = '54' 
GROUP BY r.stars 
LIMIT 0 , 30 

, aber hat mir nicht das erwartete Ergebnis

+0

verwenden. Siehe: [Warum sollte ich eine MCVE für eine scheinbar sehr einfache SQL-Abfrage bereitstellen?] (https://meta.stackoverflow.com/questions/333952/why-should-i -provide-an-mcve-für-was-scheint-mir-eine-sehr-einfache-sql-Abfrage) – Strawberry

Antwort

1

Sie haben soeben COUNT und SUM (ohne GROUP BY) verwenden können, wenn Sie nur zwei Werte wollen, zB:

SELECT COUNT(r.stars) AS 'count', SUM(r.stars) AS 'stars' 
FROM ratingstar r 
INNER JOIN proposals p ON p.jobid = r.jobid 
INNER JOIN us_signup u ON u.id = p.userid 
WHERE r.type = 'user' 
AND u.id = '54'; 

Wenn Sie die Anzahl der unterschiedlichen Werte wollen, Sie können COUNT(DISTINCT r.stars)