0

我有一个应用程序,它有一个表,其中存储了此查询的所有数据:

选择项目,姓名,地址,城市,州,邮编,纬度,经度,过期时间,照片,(((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 距离 < 150 和到期 > '$daytime - 6'按距离排序;

基本上,查询会找到选定的信息,执行计算以找到与 $submission->latitude/longitude 的距离并按这些距离排序。

由于一些外包开发工作,现在选择数据分布在 3 个表中:表业务:business_id、name、address、city、state、zip

表位置:business_id、location_id、纬度、经度

表提供:business_id、item、expiration、photo

我有很多时间获取查询以在拆分表结构上产生相同的结果。我已经尝试在 business_id 变体上加入 JOIN,但似乎抱怨未知列和/或每个派生表都必须有自己的别名。

我绝不是一个好的 MySQL 查询构建器,因此我要求在正确的方向上推动我如何处理这个问题。

提前致谢。

4

2 回答 2

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
于 2012-07-08T00:56:41.550 回答
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;
于 2017-04-25T04:11:12.413 回答