0

このパズルを解くときに何を検索すればよいかわからない。世界を求めないでください...あなたが寛大であると感じない限り、ただ方向を示してください。これを説明するのは非常に難しいでしょう。

私のウェブサイトには、測定値を含むドロップダウンメニューがあります。幅x高さのドロップダウンを選択すると、データベースの価格がチェックされます。現在、幅と高さはデータベースで24、28、32、36などの特定のものでした。したがって、クエリループからリストに測定値を取得しました...そして、それが一致し、価格をエコーし​​ます。

現在、リストされている測定値は1インチ刻みである必要があることがわかりました。したがって、特定の測定値を含むデータベースしかありませんが、測定範囲全体が必要です。

本当にデータベースにアクセスして、24 "、25"、26 "、27" ...の同じ価格と28"、29"、30 "、31"、...の同じ価格を手動で入力する必要がありますか?今回は何百もの製品をしますか?

または、最小測定値と最大測定値を選択し、それらをドロップダウンにリストして、DATABASEが正確に言っているものではないが、その間にある1インチの増分測定値の1つと一致させるSQLトリックはありますか? )24"および28"。

これがあまり混乱しないことを願って、ありがとう。

ゴードンのおかげで、これは予想よりもはるかに簡単でした。本来よりも複雑にしました。

機能したコード:

SELECT * FROM price_dimensions WHERE prodid = '".$_POST['prodid']."' AND height >= '".$_POST['heightX']."' AND width >= '".$_POST['widthX']."' ORDER BY height ASC, width ASC LIMIT 1
4

2 に答える 2

1

必要な行を挿入するだけでよいと思います。ここにいくつかの擬似コードがあります:

insert into t
    select t.width+1, price
    from t

insert into t
    select t.width+2, price
    from t

insert into t
    select t.width+3, price
    from t

価格が実際に同じである場合は、指定された幅以下の最も近い値を照会できる可能性があります。

于 2012-05-23T20:31:00.870 に答える
1

betweenテーブル構造を変更する限り、それはと関係があります。あなたの問題は基本的にあなたが単一の値を持っていて、それがどの2つの値の間にあるかを見つける必要があるということです。

これは、データベースに最小値と最大値の2つの値を格納する必要があることを意味します。例をとると、テーブルは次のようになります。

+ ------------ + ----------- + ----------- + ------- +
| product_id | min_value | max_value | 価格|
+ ------------ + ----------- + ----------- + ------- +
| 1 | 24 | 27 | 75.13 |
| 1 | 28 | 31 | 83.55 |
+ ------------ + ----------- + ----------- + ------- +

に一意の制約が必要になりますproduct_id, min_value。また、それぞれについて、同じものに対して同等以上product_idが存在することを確認する必要があります。max_valuemin_valueproductid

データを選択するためのクエリは、次のようになります。

select price
  from my_table
 where product_id = :product_id
   and :value between min_value and max_value

少し余談ですが、おそらく前にループする必要はありませんでした。可能であれば、常に1つのクエリで何かを実行してください。

于 2012-05-23T21:22:39.160 に答える