私は都市のテーブルを持ち、人口、緯度および経度を持っています。私はまた、緯度と経度を含む様々な情報を持つ空港のテーブルを持っています。上記でサブクエリにHAVINGと一致するレコードの合計を持つ1つのテーブルからアイテムを選択
cty_population_total
6541221
:
SELECT SUM(cty_population) as cty_population_total FROM
(SELECT
cty_population, (
6371 * acos (
cos (radians(37.61899948))
* cos(radians(cty_latitude))
* cos(radians(cty_longitude) - radians(-122.37500000))
+ sin (radians(37.61899948))
* sin(radians(cty_latitude))
)
) AS cty_distance
FROM cities
HAVING cty_distance < 100) cty_population_alias
これは、このような結果を与える:
このようなクエリは概ね所定の緯度と経度の100キロ内の全ての都市の人口を取得しますクエリ、37.61899948は緯度であり、-122.37500000は経度です。
私の質問は:空港テーブルから任意の数の空港を選択し、上記の数字の代わりにこのサブクエリに経度と緯度を渡し、各空港から100km以内の都市人口を見つけることができますか?理想的には次のような結果が得られます。
airport_name airport_pop
Boston Logan 6654901
London Heathrow 11345690
...など。
私はスクリプトでこれを行うことができましたが、それだけでSQLを使用できるのかどうか疑問に思っていますか?データベースエンジンはMySQLです。
あなたの代わりに '' HAVING'を使用した理由はあります。どこに? – apokryfos
WHEREは "where句 'の" cty_distance'列が不明です "というエラーをスローします。私が知る限り、別名でHAVINGを使用する必要があります。 – suzerain
「GROUP BY」なしの「HAVING」を見るのは単なる奇妙なことですが、私は個人的に「WHERE(ここでは距離の計算)<100」のようなことを個人的にやったでしょうが、それは私だけです。 – apokryfos