0

イベントとブランチに基づくアプリがあります。ブランチありとブランチなしの 2 つのイベントがあります。

イベントとブランチの両方に緯度と経度があります。

イベントは複数のブランチを持つことができます。これらのイベントを別の地理座標からの距離で並べ替えたいと思います。

分岐のあるイベントの場合は、分岐の場所を使用してどれだけ近いかを判断し、分岐のないイベントの場合はイベント自体の場所を使用する必要があります。

パフォーマンスに影響を与えずに MySQL でこれを行うことは可能ですか? または、間違った種類のデータベースを使用していますか? 現在の MySQL と Pods のデータをエクスポートするスクリプトで別の NOSQL データベースを使用する必要がありますか。

これは、私がこのフレームワークで ATM を使用している基本的なクエリであり、少し砂糖を追加します (明らかに、これは単純な MySQL では機能しません)。ブランチのないイベントは正しい順序で表示されないようです。

SELECT 
  t.*, 
  DISTANCE(\"$latitude\", \"$longitude\", 
           IF(t.branches.latitude, t.branches.latitude, t.latitude),     
           IF(t.branches.longitude, t.branches.longitude, t.longitude)
  ) as distance 
FROM table as t 
ORDER BY distance.
4

1 に答える 1