0

この状況を解決する方法がわかりません。問題は、zip_codes テーブルから場所を取得するために使用している OR 演算子にあります。たとえば、誰かが入力として「NY」と入力した場合、このフィールドだけを取得したいとします。

テーブルデータは次のようになります。

+------+-------+--------------------------------------+
| zip  | state | city                                 |
+------+-------+--------------------------------------+
| 12345| NY    | Schenectady                          |
+------+-------+--------------------------------------+

たとえば、可能な入力は「NY」なので、クエリは次のようになります。

SELECT zip, state, city 
  FROM zip_codes 
 WHERE name = 'NY' 
    OR zip = 'NY' 
    OR city ='NY' 
 LIMIT 1

上記の場合、フィールドの状態のみを取得したいのは、ユーザーが状態のみを参照として設定することを意味するためです。「Schenectady」と入力した場合は都市フィールド、「12345」と入力した場合は郵便番号フィールドのみなどです。

はい、PHP で一連の if からこれを設定できますが、私が知らない SQL クエリがどこかにあるのかもしれません

4

1 に答える 1

4
select *, case when zip = 'NY' 
               then 'zip'
               when name = 'NY' 
               then 'name'
               when city = 'NY' 
               then 'city'
          end as found
from zip_codes
where 'NY' in (name, zip, city)
limit 1
于 2012-07-25T10:06:02.040 に答える