亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用計算進行查詢排序

使用計算進行查詢排序

PHP
BIG陽 2022-07-16 16:01:41
我有這個錯誤:致命錯誤:未捕獲的錯誤:在第 15 行拋出的距離()#1 {main} 中的布爾值調用成員函數 fetch()我需要計算的是表中所有位置之間的距離,每個位置都是唯一的lat,并且long我定義了一個位置并對其進行排序 DESC 并獲取照片和標題:id |  Country |  photo  |  p_latitude |  p_longtitude1     japan      1.jpg      32.125         35.1232     Chian      2.jpg      56.125         50.1233     USA        3.jpg      42.125         90.123 function distance() {        global $con;    $lat1= 36.2048;    $lang1= 138.2529;    $query = 'SELECT *, CASE        WHEN '. $lat1 .' = `p_latitude` && '. $lang1 .' = `p_longtitude` THEN  0 ELSE            DEGREES(ACOS(SIN(RADIANS(`p_latitude`)) * SIN(RADIANS('. $lat1 .')) +COS(RADIANS(`lat`)) * COS(RADIANS('. $lat1 .')) * COS(RADIANS(`p_longtitude`-'. $lang1 .'))))* 69.09        END as distance    FROM `posts`    ORDER BY distance desc';    $resd = $con->query($query);       while($row_ratessada= $resd->fetch()){                    $post_rate= $row_ratessada['post_title'];           echo "this is the title"." ".$post_rate;       }      } 
查看完整描述

2 回答

?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

在您的查詢中,您嘗試訪問列lat=> (COS(RADIANS(`lat`))- 嘗試將其更改為(COS(RADIANS(`p_latitude`))



查看完整回答
反對 回復 2022-07-16
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

您可以使用表表達式預先計算距離,然后在ORDER BY子句中使用它:


select *

from ( -- the table expression "x" starts here

  select 

    *,

    case ... end as distance

  from posts

) x

order by distance desc


查看完整回答
反對 回復 2022-07-16
  • 2 回答
  • 0 關注
  • 112 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號