【发布时间】:2015-08-14 04:09:10
【问题描述】:
我正在开发一个汽车交易网站。我有一个名为车辆的表,其中包含大约 20 个字段,包括车辆的品牌、型号等。我正在编写一个搜索查询,以按品牌检索系统组中的所有汽车以及它们的数量。
因此,我的目标是让系统中的所有车辆按其品牌及其数量进行分组,但数量部分无法正常工作。它通过忽略我的距离计算标准来返回汽车总数。
我正在执行以下 SQL:
SELECT * FROM (SELECT *,ROUND(((ACOS(SIN(51.4811109 * PI() / 180) * SIN(latitude * PI() / 180) + COS(51.4811109 * PI() / 180) * COS(latitude * PI() / 180) * COS((-0.433641 - longitude) * PI() / 180)) * 180 / PI()) * 60 * 1.1515),2) AS distance, count(make) AS carcount FROM `vehicle` `t` WHERE (status='Active')) as v GROUP BY make HAVING distance<=10
它返回的一切都是正确的,除了 carcount 它返回系统中的 325 辆宝马汽车(系统中的宝马汽车总数)而不是 12 辆宝马汽车(10 英里距离内只有 10 辆汽车)。
谁能看到我做错了什么?感谢您的帮助。
【问题讨论】:
-
你需要先过滤,再分组。
标签: php mysql sql sql-server haversine