0

我有一张汽车记录表。我想查询该表,以便检索所有(找到的)记录,并在结果之外显示一个带有地区名称以及该地区有多少汽车的表。

就像普通的 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
                ...

希望你明白我的意思。

4

3 回答 3

2

您不能从单个查询中生成两个视图。如果您想查看所有记录,那就是一个查询。如果您想查看按地区分组的记录,那是一个单独的查询。

于 2013-03-28T13:22:23.613 回答
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;
于 2013-03-28T13:24:41.273 回答
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
于 2013-03-28T13:22:27.677 回答