私はPHPを使用してMySQLで作業しています。郵便番号と各郵便番号の緯度/経度を含む 1 つのテーブルから郵便番号のクエリを実行しています。2 番目のテーブルには、郵便番号とその郵便番号の平均収入が含まれています。ユーザーが郵便番号 (これを基本郵便番号と呼びましょう) を指定すると、半径 15 マイルの郵便番号が返されます。Web ページを介して、ユーザーは PHP で MySQL の BETWEEN を使用する収入の範囲でクエリを実行できます。
私の問題は、ユーザーが選択した範囲によっては、収入の範囲外であるため、基本郵便番号が常に表示されない場合があることです。これが発生すると、ソートされた出力にベースの郵便番号が含まれないため、ユーザーは混乱します。収入の範囲が指定されていないかのように、ベースの郵便番号を含めることができるようにしたい.
範囲指定されたデータ (BETWEEN を使用する) を含め、ベースの郵便番号のデータを含めて、MySQL の出力の順序付けを引き続き利用するにはどうすればよいですか。ありがとう!
更新: 郵便番号 90210 の作業クエリは次のとおりです。ご覧のとおり、BETWEEN が収入の範囲内にないため (平均 agi)、希望どおりに 90210 が返されません。
mysql> SELECT zip, city, state, avg_agi, ( 3959 * acos( cos( radians(34.088808) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-118.40612) ) + sin( radians(34.088808) ) * sin( radians( lat ) ) ) ) AS distance FROM zip_codes, avgagi where zip=zipcode and avg_agi BETWEEN 100000 and 200000 HAVING distance < 5 ORDER BY distance LIMIT 0 , 10000;
+-------+----------------+-------+---------+------------------+
| zip | city | state | avg_agi | distance |
+-------+----------------+-------+---------+------------------+
| 90069 | West Hollywood | CA | 121753 | 1.42816585190112 |
| 90211 | Beverly Hills | CA | 164538 | 2.06804933097035 |
| 90024 | Los Angeles | CA | 187134 | 2.47751318825072 |
| 90025 | Los Angeles | CA | 130983 | 3.76591348160737 |
| 91604 | Studio City | CA | 103328 | 3.8634176735557 |
| 90064 | Los Angeles | CA | 130769 | 3.95933331921038 |
| 90068 | Los Angeles | CA | 100370 | 4.52908379278674 |
+-------+----------------+-------+---------+------------------+