我有一张有汽车记录的表格。我想查询该表,以便检索所有(找到的)记录,并且除了结果之外,还会显示带有区名的表以及区中有多少辆车。
与正常的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
...
希望你知道我的意思。
答案 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