[英]Custom MySQL Order By depending on a PHP function value
我有一個這樣的數據庫
http://i.stack.imgur.com/MHEwr.jpg
我有一個PHP函數,該函數將計算該地址與用戶(網絡用戶)的距離{get_distance($ person_location)}。
我需要一個查詢,該查詢將使用該函數並按與用戶的距離(使用PHP的{get_distance($ person_location)}函數)從數據庫順序返回數據。
誰能幫我嗎?
您無法通過PHP函數的結果在服務器端對SQL結果進行排序。*
有兩種方法可以解決您的一般問題:
您的距離計算可能依賴於地理坐標(緯度和經度)。 將這些數據保存到數據庫中的每個地址,然后也用SQL執行距離計算。
在此處找到有關如何在MySQL中執行此操作的更多信息: 查找兩個緯度/經度點之間距離的最快方法
您的待辦事項清單。 一次執行以下操作:
從現在開始執行以下操作:
SELECT
查詢以計算距離並進行排序 在數據庫中查詢所有地址,將它們放入PHP數組,使用函數計算到當前用戶的距離,然后對數組進行排序。
我強烈建議不要這樣做,而是在服務器端實現所有方法(方法1)。
* 從理論上講,您可以通過以下方法進行計算:離線計算每個地址的距離,使用結果更新臨時表,然后使用該臨時表再次查詢表以對結果進行排序。 但是,這比用PHP進行所有操作還要糟糕,您甚至不應該考慮這一點!
恕我直言,不可能在查詢中使用PHP函數,只能使用MySQL提供的聚合函數之類的東西。 我想您需要通過PHP處理數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.