2012-05-29 5 views
0

Я строию интернет-магазин, используя RDBMS, и хотел знать, что является наибольшим эффективным образом для представления количества товаров в той же категории? Так, например, мое меню категория будет выглядеть примерно так:Методы подсчета предметов в категории

  • Книги (212)
  • MP3-плееры (13)
  • Обувь (562)

Какие методы вы используете, чтобы получить эти цифры? Я использую PostgreSQL 9.1, но я предполагаю, что механика должна быть одинаковой во всех СУБД.

ответ

2

Вам нужно GROUP BY

SELECT category, count(*) 
FROM items 
GROUP BY category 

Это будет подсчитывать количество элементов в таблице для каждой категории.

+0

Но это GROUP BY достаточно эффективно выполняться каждый раз, когда страница будет загружаться? – and3p

+0

По всей вероятности, да. Если ваши таблицы исключительно велики, вы можете сохранить подсчеты категорий в другой таблице, обязательно обновляя их в любое время, когда элементы будут добавлены, удалены или изменены. – Chad

0

Ну, фактический запрос для того, что вы хотите:

SELECT category || ' (' || cast(count(*) as varchar(255)) || ')' as entry 
FROM items 
GROUP BY category 
+2

Может быть, дело вкуса, но я бы использовал свой слой представления в круглых скобках и не делал эту манипуляцию с текстом частью запроса. – Tim

+0

Я согласен, что это вопрос вкуса. Однако это ответ на заданный вопрос. –

+0

Я согласен с Тимом, хорошее приложение имеет хорошо выделенные логические слои. И пример, который я дал, был предназначен только для разъяснения, а не как я буду представлять его в реальной жизни. Поэтому я должен принять другой ответ. ура – and3p