0

私は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 |
+-------+----------------+-------+---------+------------------+
4

1 に答える 1

2

WHERE (x と y の間のデータ) OR (zip = z)

いいえ動作する必要がありますか?

于 2012-10-07T16:38:47.270 に答える