选择每个项目的金额(计数)并将其作为列表返回

时间:2014-02-15 08:22:40

标签: sql postgresql postgresql-9.2

我有一个我在页面上显示的类别列表。

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

每个都显示了它拥有的物品数量。当我点击某个类别时,它会显示它拥有的所有项目。很简单。

我使用Postgresql。我想知道,从db检索这些数字的更简单有效的方法是什么?好吧,我知道如何选择一个项目的项目数:

select count(1) from ....

但我必须同时为每个类别显示所有这些内容。我该怎么做:我应该使用什么数据结构?查询的外观如何?

当然,他们应该保持相同的顺序,因为在客户端我必须解析它们。

P.S。只有少数类别,例如10-20,并且肯定没有更多。

1 个答案:

答案 0 :(得分: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