0

我想知道是否有人可以帮助我查询。

这是我的查询,效果很好:

$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 提到的那样创建另一个表?

数据库的结构基本上是包含 store id、name 和 address 的 stores 表,products 数据库包含具有 store id 的所有产品。

商店 1 可以有产品 1、产品 2 和产品 4。

商店 2 可以有产品 1、产品 2 和产品 3。

商店 3 可以有产品 2、产品 3 和产品 4。

再次感谢

4

1 回答 1

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

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

于 2013-08-08T15:38:25.107 回答