ポイントから一定の距離にある銀行のリストを取得しています
ICBC 6805 119.86727673154
Bank of Shanghai 7693 372.999006839511
Bank of Ningbo 7626 379.19406334356
ICBC 6790 399.580754911156
Minsheng Bank 8102 485.904900718796
Standard Chartered Bank 8205 551.038506011767
Guangdong Development Bank 8048 563.713291030103
Bank of Shanghai 7688 575.327270234431
Bank of Nanjing 7622 622.249663674778
ただし、各チェーンの1つの会場を取得したいだけです。
これまでのクエリ
SELECT name, id , (
GLength( LineStringFromWKB( LineString( `lnglat` , POINT( 121.437478728836, 31.182877821277 ) ) ) )
) *95000 AS `distance`
FROM `banks`
WHERE (
lnglat != ""
)
AND (
published =1
)
HAVING (
distance <700
)
ORDER BY `distance` ASC
group by nameを使用すると、距離が範囲内に収まらないことが評価されるため、機能しません。つまり、700 mを超える距離に低いIDのICBCがある場合、2つのICBCが700 m以内にある場合でも、ICBCは結果に表示されません。だから私はこれgroup by
が前に起こるので起こるhaving
のではないかと思いますそれとも別の解決策がありますか?
実際の列ではないため、距離チェックをどこに移動できませんでした#1054 - Unknown column 'distance' in 'where clause'