MySQL查询帮助,多个表

时间:2012-07-08 00:33:20

标签: mysql

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

选择项目,名称,地址,城市,州,邮编,纬度,经度,到期,照片,(((acos(sin((“。$ submission-&gt; latitude。”* pi()/ 180)) * sin((latitude * pi()/ 180))+ cos((。。$ submission-&gt; latitude。“* pi()/ 180))* cos((latitude * pi ()/ 180))* cos(((“。$ submission-&gt;经度。” - 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查询构建器,因此我要求在正确的方向上推动我如何处理这个问题。

提前致谢。

2 个答案:

答案 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;