2010-01-16 6 views
1

J'ai une table qui contient des évaluations. Inclus avec le classement sont les données fournies par l'utilisateur telles que la langue à laquelle appartient la série liée.Valeur la plus commune pour plusieurs champs

id series_id language quality type rating 
1 18   1   2  1  20 
2 18   2   3  2  13 
3 18   1   1  2  25 
4 18   1   3  5  8 
5 18   3   1  1  17 
6 18   3   3  2  9 

Quelle serait la meilleure façon de trouver la valeur la plus courante pour la langue, la qualité et le type, pour un certain series_id? En d'autres termes, si je regardais la série 18, cela retournerait ce qui suit au fur et à mesure que ces nombres apparaîtront le plus.

language: 1 
quality: 3 
type:  2 

Répondre

3

Il est probablement plus facile de le faire que trois instructions SELECT distinctes:

SELECT language 
FROM MyTable 
WHERE series_id = 18 
GROUP BY language 
ORDER BY COUNT(*) DESC LIMIT 1 

SELECT quality 
FROM MyTable 
WHERE series_id = 18 
GROUP BY quality 
ORDER BY COUNT(*) DESC LIMIT 1 

SELECT type 
FROM MyTable 
WHERE series_id = 18 
GROUP BY type 
ORDER BY COUNT(*) DESC LIMIT 1 
Questions connexes