查询2个表?

时间:2013-08-08 15:31:38

标签: php mysql

我想知道是否有人可以帮我解决问题。

这是我的查询效果很好:

$query = sprintf("SELECT primary_key, address, postcode, lat, lng, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM stores HAVING distance < '%s' ORDER BY distance LIMIT 0 , 5"

我还需要从名为products的表中检索数据;主键col1和col2。 主键是公共字段。

我如何添加此查询? 希望有人可以帮助我?

非常感谢


响应rap-2-h的答案 感谢所有回复的人。

感谢代码rap-2-h,这很有效,并检索了所有的商店和产品。

你能帮助我吗? 我给出的原始代码显示了3个最接近用户输入位置的商店。我还想列出每个商店存储的产品范围。

您给我的代码有效,但商店名称和地址与其存储的产品数量重复。

例如:

商店1, 地址, 产品1

商店1, 地址, 产品2

商店1, 地址, 产品3

而不是: 商店1, 地址, 产品1, 产品2, 产品3

希望你能引导我朝着正确的方向前进。 非常感谢你的帮助。

我是否必须创建Markus Hofmann提到的另一张桌子?

数据库的结构基本上是包含商店ID,名称和地址的商店表,而产品数据库包含具有商店ID的所有商品。

商店1可以包含产品1,产品2和产品4。

商店2可以包含产品1,产品2和产品3.

商店3可以包含产品2,产品3和产品4。

再次感谢

1 个答案:

答案 0 :(得分:0)

您可以尝试这个(INNER JOIN条款,如@TheGunner所说):

SELECT stores.primary_key, products.primary_key, address, postcode, lat, lng, col1, col2, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM stores 
INNER JOIN products ON products.primary_key = stores.primary_key
HAVING distance < '%s' ORDER BY distance LIMIT 0 , 5

(我希望我理解你的问题)