是否可以像这样进行条件SQL查询:
我有一个表格要求最大值,最小值(两个必需值),然后输入1,2或3个不同的邮政编码。
如果输入的邮政编码只有1个,我希望只用一个邮政编码查询数据库,如下:
SELECT * FROM first_page_data WHERE
value_min > 1
AND
value_max < 5
AND
postcode1 < <<geocode formula here>>
但如果输入两个或三个邮政编码,我想将其更改为:
SELECT * FROM first_page_data WHERE
value_min > 1
AND
value_max < 5
AND
(postcode1 < <<geocode formula here>>
OR
postcode2 < <<geocode formula here>>
OR
postcode3 < <<geocode formula here>>)
如果我只使用底部查询,并且没有数据用于后两个邮政编码,那么它将返回错误。我是否必须使用PHP条件语句手动检查邮政编码,然后使用连接将它们连接到一个查询中,或者是否有一种巧妙的方法在SQL查询中执行此操作,这意味着我可以取消条件语句?
为清楚起见,我遗漏的地理编码公式如下:
((((acos(sin((".$_SESSION['fsea_lat']."*pi()/180)) * sin((`geo_lat1`*pi()/180))+cos((".$_SESSION['fsea_lat']."*pi()/180)) * cos((`geo_lat1`*pi()/180)) * cos(((".$_SESSION['fsea_lon']."- `geo_lon1`)* pi()/180))))*180/pi())*60*1.1515) * (1.609344/1000)) < ".$_SESSION['frange']."
计算设定点和输入的邮政编码之间的距离,如果它小于范围变量frange,则满足条件。如果三个邮政编码中的任何一个满足此公式,我希望查询返回该行。
但是当然如果邮政编码2和3中没有数据,公式将尝试使用数据库表中的NULL进行计算,并且(虽然可能不是正式错误)结果将是错误的!< / p>
答案 0 :(得分:0)
也许使用IN构造
postcode1 IN (1,2,3)