显示表格的所有结果以及在哪个区域中有多少个

时间:2013-03-28 13:16:07

标签: php mysql join

我有一张有汽车记录的表格。我想查询该表,以便检索所有(找到的)记录,并且除了结果之外,还会显示带有区名的表以及区中有多少辆车。

与正常的craigslist结果页面或类似的网站一样,显示结果,左侧是一个表格,显示结果的位置(在哪些区域等),每个区域有多少,等等

目前我通过两个查询实现了这一目标,但我问我是否只用一个查询就无法完成?

我的表看起来像这样简化:

    name | color | year | district
    ------------------------------
    ford | blue  | 1998 | 1010
    opel | red   | 2001 | 1030
    vw   | green | 1999 | 1010
    ...  | ...   | ...  | ...

所以结果应该是这样的:

districts       results
---------       ----------
1010 (2)        ford, 1998
1030 (1)        opel, 2001
....            vw, 1999
                ...

希望你知道我的意思。

3 个答案:

答案 0 :(得分:2)

您无法从单个查询生成两个视图。如果要查看所有记录,那就是一个查询。如果要查看按地区分组的记录,则这是一个单独的查询。

答案 1 :(得分:1)

您不能从一个查询中生成两个结果集。

要获取包含汽车总数的地区名称,请执行以下操作:

SELECT d.name, COUNT(c.id) as total
FROM districts AS d
LEFT JOIN cars AS c ON c.district = d.id
GROUP BY d.id;

答案 2 :(得分:0)

我的猜测是你必须使用GROUP BY。

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

SELECT c.name, 
       c.color, 
       c.year, 
       c.district, 
       COUNT(c.id) counted,
FROM   cars c
GROUP BY district, name