Php 查询2个表?

Php 查询2个表?,php,mysql,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 ) ) ) ) A

我想知道是否有人能帮我解答这个问题

这是我的查询,非常有效:

$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"
$query=sprintf(“选择主键、地址、邮政编码、lat、lng,(3959*acos(弧度('%s'))*cos(弧度(lat))*cos(弧度(lng)-弧度('%s'))+sin(弧度('%s'))*sin(弧度(lat)),作为与距离小于'%s'的商店之间的距离,按距离限制的顺序为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

再次感谢

您可以尝试一下(正如@TheGunner所说的
内部连接
条款):

SELECT stores.primary_key,products.primary_key,address,postcode,lat,lng,col1,col2,(3959*acos(弧度('%s'))*cos(弧度(lat))*cos(弧度(lng)-弧度('%s'))+sin(弧度('%s'))*sin(弧度(lat))作为到门店的距离
products.primary\u key=stores.primary\u key上的内部联接产品
距离小于“%s”的距离限制为0,5

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

您必须执行联接。内部联接将排除没有产品的商店:您是指一对多关系吗?因此,一个产品有多个商店,这意味着一个产品在多个商店中可用?要将products表与商店联接,您需要一个名为
product\u store
pivot的
表(要联接的表名,按字母顺序排列)。请告诉我这是否是您想要的,我会给您一个答案。您想要只出现在两个表中的记录,还是初始查询中的所有记录,然后是第二个表中的任何匹配结果?您可以使用内部联接或左联接,具体取决于。感谢您花时间响应!我尝试了内部联接,但它检索到了所有t我在上面的问题中添加了一个回答。我不确定我是否需要改变数据库的结构。数据库是给我的,所以我试着用它来处理它。有什么想法吗?再次感谢你们的回答。考虑在应用层/演示L上处理数据显示的问题。如果您有一个(例如,一个简单的php循环作用于一个格式良好的数组)感谢这个rap-@-h,它工作得很好,检索到了所有的商店和产品。我想知道你是否可以进一步帮助我?我已经在上面的问题中发布了对你答案的回复,这样更容易阅读。希望很快收到你的回复!再次感谢你的帮助。你可以使用这个查询,并对每一行进行php循环。你想吗不仅仅是SQL,还有PHP和SQL?我使用的是PHP和MySQL。最好的方法是什么?下面是一个关于PHP和MySQL的快速而肮脏的例子:(不确定这是你想要的,但它可以帮助我理解)您好@rap-2-h。非常感谢您提供的代码。我按照教程进行了学习。最近的存储将输出为XML格式。联接是否会以这种方式使用XML格式?再次感谢。
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