【发布时间】:2012-07-07 22:49:07
【问题描述】:
我有一个应用程序,它有一个表,其中存储了我用于此查询的所有数据:
选择项目,姓名,地址,城市,州,邮编,纬度,经度,过期时间,照片,(((acos(sin((".$submission->latitude."*pi()/180))) * sin((latitude*pi()/180))+cos((".$submission->纬度."*pi()/180)) * cos((latitude*pi()/180)) * cos(((".$submission->longitude."- longitude)*pi()/180))))*180/pi())*60*1.1515*1.609344) 作为距离Offers HAVING distance '$daytime - 6' ORDER BY distance;
基本上,查询会找到所选信息,执行计算以找到与 $submission->latitude/longitude 的距离并按这些距离排序。
由于一些外包开发工作,选择数据现在分布在 3 个表中: 餐桌业务: business_id、姓名、地址、城市、州、邮编
桌子位置: business_id, location_id, 纬度, 经度
餐桌优惠: business_id、商品、过期、照片
我有很多时间得到一个查询以在拆分表结构上产生相同的结果。我已经尝试在 business_id 变体上加入 JOIN,但似乎抱怨未知列和/或每个派生表都必须有自己的别名。
我绝不是一个优秀的 MySQL 查询构建器,因此我要求在正确的方向上推动我如何处理这个问题。
提前致谢。
【问题讨论】:
-
还有一件事,问题似乎集中在距离计算上,并让这些计算发生在正确的地方。我可以在桌子上做一个 JOIN 没有问题,只是不能添加距离计算。这几乎就像我需要做一个 JOIN,然后从加入的结果中选择,只是不知道该怎么做。
-
通常 HAVING 进入具有 GROUP BY 子句以引用组计算结果的查询。如果您仅在该 HAVING 子句中出现错误,我不会感到惊讶。尝试改用 WHERE,看看是否能解决您的问题。另一方面,我在您的查询中没有看到任何 JOIN。请用连接编写您的查询,如果您可以发布您正在使用的表的架构,这将很有帮助。
标签: mysql