0

コメント評価列を平均して、半径内で平均評価が最も高い被験者を取得しようとしています。

私は次の行に沿って何かを試しました:

select avg(`rating`) AS `avgrate` , subject.*,
, ( 3959 * acos( cos( radians(22.28639) ) * cos( radians( lat ) ) * cos( radians( subject.long ) - radians(114.1491) ) + sin( radians(22.28639) ) * sin( radians( lat ) ) ) )
AS distance 
from `subject_review` 
JOIN `subject`
ON subject_review.subject_id = subject.id
group by `subject_id`
HAVING distance <= 100 
order by `avgrate` DESC
LIMIT 10

この SQL は問題なく動作します。radius フィルターを追加するだけです。

select avg(`rating`) AS `avgrate` ,subject_review.id , subject.*
from `subject_review` 
JOIN `subject`
ON subject_review.subject_id = subject.id
group by `subject_id`
order by `avgrate` DESC
LIMIT 10
4

0 に答える 0