2012-05-21 29 views
5

Quiero filtrar productos en un sitio. Algo como esto:¿Cómo contar elementos por categoría?

Department 
- lassics (13,395) 
- Literary (111,399) 
- History (68,606) 
... 

Format 
- HTML (3,637) 
- PDF (8) 
- Audio CD (443) 
... 

Language 
- English (227,175) 
- German (10,843) 
- French (10,488) 
... 

Cómo contar los productos por categoría? Una consulta SQL por separado para cada categoría sería demasiado lenta porque hay demasiados productos y categorías. Sugiero que el almacenamiento en caché tampoco es una opción.

Quizás tiene sentido utilizar consultas MySQL EXPLAIN (aunque no siempre proporciona información adecuada)? ¿O tal vez usar el motor de búsqueda de esfinges para contar? ... ¿Cuál es la mejor manera de hacer esto? Gracias.

+0

cheque post relacionados: http://stackoverflow.com/questions/1136041/sql-tree-like-query-most-parent-group –

Respuesta

5

Uso COUNT() con el GROUP BY a ellos se agrupan por categoría

+0

sé sintaxis SQL. No es el caso. Estoy preocupado por el rendimiento. Habrá casi 500 000 elementos y las consultas serán bastante pesadas con muchos parámetros, por lo que tomará mucho tiempo para contar – romvlads

8

Probar:

SELECT category, COUNT(*) as count FROM table GROUP BY category 

La respuesta debe ser todos los diferentes category valores, y el número de ocurrencias de cada uno.

8

¿Qué tal esto

SELECT field1, count(1) as Total 
FROM myTable 
GROUP BY field1 
Cuestiones relacionadas