这是我在这里解决的问题的补充: 如何在perl的x英里内获得邮政编码数组
好的,我有阵列@zips.现在我试图在这样的查询中使用它:
SELECT `club_name`,`city` FROM `table` WHERE `public_gig` = 'y' AND `zip` IN (@zips)
#I also tried syntax "IN ("@zips"), IN @zips and IN ('@zips')"
Run Code Online (Sandbox Code Playgroud)
但是,我无法让它发挥作用.(我正在使用占位符,例如您在上面的链接中看到的.)
我能够让这个工作:
$fzip=shift(@Zips);
$lzip=pop(@Zips);
SELECT `club_name`,`city` FROM `table` WHERE `public_gig` = 'y' AND `zip` BETWEEN $fzip AND $lzip
ZIP | public_gig | start_time | fin_time | city | club_name | and so on
33416 | y | 9pm | 2am | clearwater | beach bar | yada
Run Code Online (Sandbox Code Playgroud)
但是,由于显而易见的原因和一些准确性的相似性,这并不是我想要的.只是想看看我是否可以让自己有所作为.
为什么我不能使用IN获取查询以使用数组中的拉链?没有返回任何内容,也没有错误.
在这个查询中实际上有很多,但是,我把它全部留在这里以保持简短.
我试图自己解决这个问题.显然,我当天的学习能力接近顶峰.
谢谢你的帮助.
我在这里发现了很多计算和一些php的例子,大多数都是我的头脑.
我找到了这个例子:
SELECT b.zip_code, b.state,
(3956 * (2 * ASIN(SQRT(
POWER(SIN(((a.lat-b.lat)*0.017453293)/2),2) +
COS(a.lat*0.017453293) *
COS(b.lat*0.017453293) *
POWER(SIN(((a.lng-b.lng)*0.017453293)/2),2))))) AS distance
FROM zips a, zips b
WHERE
a.zip_code = '90210' ## I would use the users submitted value
GROUP BY distance
having distance <= 5; ## I would use the users submitted value
Run Code Online (Sandbox Code Playgroud)
但是,我无法理解如何使用我的数据库实现查询.
它看起来像我需要的查询.
但是,我甚至无法找到/理解b.zip_code实际上是什么!(什么是b.和zips a, zips b?)
我也不需要state在查询中.
我的mySQL数据库结构是这样的:
ZIP | LAT | LONG
33416 | 26.6654 | -80.0929
Run Code Online (Sandbox Code Playgroud)
我写这个是为了尝试返回某种结果(不是基于上面的查询)但是,它只会踢出一个邮政编码.
## Just for a …Run Code Online (Sandbox Code Playgroud)