如何从另一个表中获取每个值的计数?

Posted

技术标签:

【中文标题】如何从另一个表中获取每个值的计数?【英文标题】:How do I get a count of each value, based from another table? 【发布时间】:2010-09-18 22:19:02 【问题描述】:

我有一个列出所有志愿者的志愿者_2009 表和一个列出志愿者可以分配到的场所的场所表,它们只分配给一个。

我要做的是打印出分配到每个场地的志愿者人数。

我希望它像这样打印出来:

地点名称:志愿者人数

表:志愿者_2009 列:id、名称、venue_id

桌子:场地 列:id、场地名称

他们通过volunteers_2009.venue_id = venues.id联系起来

这是我拥有的,但它不能正常工作。

$sql = "SELECT venues.venue_name as 'Venue', COUNT(volunteers_2009.id) as 'Number Of 
Volunteers' FROM venues ven JOIN volunteers_2009 vol ON 
(venues.id=volunteers_2009.venue_id) GROUP BY venues.venue_name ORDER BY
venues.venue_name ASC";

$result = mysql_query($sql);

while(list($name,$vols) = mysql_fetch_array($result)) 
    print '<p>'.$name.': '.$vols.'</p>';

【问题讨论】:

【参考方案1】:

不是 MySQL 人,所以这可能真的是错误的,但是当你给你的表一个别名时,你不需要用那个名字来引用它。

$sql = "SELECT ven.venue_name as 'Venue', COUNT(vol.id) as 'Number Of 
Volunteers' FROM venues ven JOIN volunteers_2009 vol ON 
(ven.id=vol.venue_id) GROUP BY ven.venue_name ORDER BY ven.venue_name ASC";

【讨论】:

【参考方案2】:
$query = "SELECT ven.venue_name AS 'Venue', count(*) AS 'Number of venues'
         FROM volunteers_2009 AS vol, venues AS ven WHERE vol.venue_id = ven.id 
         GROUP BY ven.venue_name";

【讨论】:

以上是关于如何从另一个表中获取每个值的计数?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取同一张表中不同类别的布尔值的比例

如何获取列中每个不同值的计数? [复制]

如何使用 Fluent NHibernate 从另一个表中获取一列

如何获取列中每个值的计数?

从另一个表中选择 * 以及计数/总和

从另一个表中获取包含一些数据的列表用户