我的应用程序有一个表,其中存储了此查询的所有数据:
选择项目,名称,地址,城市,州,邮编,纬度,经度,到期,照片,(((acos(sin((“。$ submission-> latitude。”* pi()/ 180)) * sin((latitude
* pi()/ 180))+ cos((。。$ submission-> latitude。“* pi()/ 180))* cos((latitude
* pi ()/ 180))* cos(((“。$ submission->经度。” - longitude
)* pi()/ 180))))* 180 / pi())* 60 * 1.1515 * 1.609344)距离距离Offers
距离<1。 150 AND expiration&gt; '$ daytime - 6'按距离排序;
基本上,查询会查找所选信息,执行计算以查找距离$ submission-&gt;纬度/经度的距离,并按这些距离排序。
由于一些外包开发工作,选择数据现在分散在3个表中: 表业务: business_id,名称,地址,城市,州,邮编
表位置: business_id,location_id,纬度,经度
表格提供: business_id,item,expiration,photo
我有时间获得查询以在拆分表结构上生成相同的结果。我在business_id变体上尝试了JOIN,但似乎对未知列和/或每个派生表都有自己的别名抱怨。
我绝不是一个优秀的MySQL查询构建器,因此我要求在正确的方向上推动我如何处理这个问题。
提前致谢。
答案 0 :(得分:1)
您必须简单地加入您的查询
$t1 = business table
$t2 = location tabe
$t3 = offers table
SELECT $t1.*,
$t2.location_id,($t2.latitude .. compute ),($t2.longitude ... compute),
$t3.item, $t3.expiration, $t3.photo
FROM $t1
JOIN $t2 on $t1.business_id = $t2.business_id
JOIN $t3 on $t3.business_id = $t1.business_id
答案 1 :(得分:0)
这段代码应该这样做。
Select b.name, b.address, b.city, b.state, b.zip, c.location_id, c.latitude, c.longitude, d.item, d.expiration, d.photo
FROM business b LEFT JOIN location c
ON b.business_id = c.business_id
LEFT JOIN offers d
ON b.business_id = d,business_id;