2014-02-15 1 views
0

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

category1(21) 
category2(33) 
category3(0) 
category4(149) 

Каждый из них показывает количество предметов, которые он имеет. Когда я нажимаю на категорию, она показывает все элементы, которые она имеет. Довольно просто.

Я использую Postgresql. Интересно, какой простой и эффективный способ получить эти числа из db? Ну, я знаю, как выбрать количество элементов для одного пункта:

select count(1) from .... 

Но я должен показать все из них для каждой категории в то же время. Как мне это сделать: какую структуру данных я должен использовать? Каким должен быть запрос?

Конечно, они должны оставаться в том же порядке, потому что у клиента я должен их разбирать.

P.S. Есть только несколько категорий, таких как 10-20, и их не будет больше.

+1

Что вы имеете в виду «что структура данных следует использовать»? У вас еще есть db? – Alexander

+0

@ Alexander, я имею в виду, как мне вернуть список (кортеж) из SQL-запроса? есть ли разумный путь? да, у меня есть дБ. –

+0

Возможно, что-то вроде «select count (*), category_id от

group by category_id"? – ondra

ответ

2

Надеюсь, это может вам помочь.

У вас должно быть две таблицы - 1. category(id, name)2. items(id, name, catid). Я просто взял минимальные поля, но вы можете добавить. catid является ссылкой на категорию id в таблице товаров.

Ваш запрос должен быть как -

SELECT c.name as Category, COUNT(i.id) as Items 
FROM category as c LEFT OUTER JOIN items as i ON (c.id= i.catid) 
GROUP BY c.id ORDER BY c.name