我正在写一个代码来显示最近的商店位置和他们的开放状态(比如商店是按月营业还是关闭)。我正在使用以下代码,这是工作良好的距离,但我想排序我的列表,以显示其打开状态的数据,然后排序列表与他们的距离。您可以帮助只是把我的PHP下面的if条件代码到查询我有2列'start_date'与值'int'为月和'end_date' ...我正在使用下面的php代码来在html中显示状态。您能否帮助我改进我的查询,使其先按打开状态排序结果,然后再按距离排序
$currMonth = date('m');
$query="SELECT *,
6371 * 2 * ASIN(SQRT( POWER(SIN(($lat - latitude) * pi()/180 / 2), 2) + COS($lat * pi()/180) * COS(latitude * pi()/180) *
POWER(SIN(($long - longitude) * pi()/180 / 2), 2) )) as
distance, $currMonth >= start_date as open FROM table_name
GROUP BY Id HAVING distance <= $km ORDER by distance ASC ,open ASC";
if (($currMonth >= $row['start_date']) && ($currMonth <= $row['end_date']))
$Status = "open";
else
$Status = "close";发布于 2012-10-09 22:50:07
替换查询的此行
$currMonth >= start_date as open FROM table_name有了这个:
IF($currMonth >= start_date AND $currMonth <= end_date, 'open', 'closed') as open FROM table_name它使用一个内联IF条件,就像这样- IF(condition, true_result, false_result)
如果条件为真,则结果为true_result。如果条件为false,则结果为false_result。
如果您想先按打开状态排序,然后按距离排序,则还需要更改ORDER子句的顺序:
... ORDER BY open ASC, distance ASChttps://stackoverflow.com/questions/12789536
复制相似问题