2012-05-21 14 views
5

Ich möchte eine Filterung von Produkten auf einer Website vornehmen. Etwas wie folgt aus:Wie können Sie Artikel pro Kategorie zählen?

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) 
... 

Wie Produkte pro Kategorie zählen? Eine separate SQL-Abfrage für jede Kategorie wäre zu langsam, da es zu viele Produkte und Kategorien gibt. Ich schlage vor, Caching ist auch keine Option.

Vielleicht ist es sinnvoll, MySQL EXPLAIN-Abfragen zu verwenden (obwohl es nicht immer ausreichende Informationen liefert)? Oder vielleicht Sphinx-Suchmaschine zum Zählen? ... Was ist der beste Weg, dies zu tun? Vielen Dank.

+0

Prüfung im Zusammenhang Beitrag: http://stackoverflow.com/questions/1136041/sql-tree-like-query-most-parent-group –

Antwort

5

Verwenden COUNT() mit dem GROUP BY gruppieren sie zusammen nach Kategorie

+0

Ich weiß, SQL-Syntax. Das ist nicht der Fall. Ich mache mir Sorgen um die Leistung. Es wird fast 500 000 Artikel geben und die Anfragen werden mit vielen Parametern ziemlich schwer sein, so dass es viel Zeit für das Zählen braucht – romvlads

8

Versuchen:

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

Die Antwort sollte alle verschiedenen category Werte, und die Anzahl der Vorkommen von jeder sein.

8

Wie über diese

SELECT field1, count(1) as Total 
FROM myTable 
GROUP BY field1 
Verwandte Themen