2017-03-02 3 views
0

これを動作させることに問題があります。データベースから最も近い一致を示す

すみません。

これは私が達成しようとしているものです:長さ300mm、高さ400mm、幅55mmなどの測定値を入力すると、これらの測定値に最も近い一致、たとえば上3が必要ですか?だから別の製品がこれらの長さ310mmの高さ410mmの幅60mmの測定を持っている場合私はプログラムがこの製品を表示するためには、元の測定に近いので。私のデータベースには、異なる測定値を持つ300種類以上の製品があります。私はあなたに製品名と製品の測定値を表示するプログラムを望みます。

残念ですがあまりにも曖昧です。

+1

ええ、それはかなり曖昧です。具体的な式(array?string?XML?)に関する入力と出力のより良い例を挙げることができますか? – tadman

+0

"これを動作させるのに問題があります。"多分それは正しい言葉ではなく、私は何をするべきかという考えを持っていたが、それをどうするか考えていないということだった。 – alexO

答えて

1

これは「閉じる」を定義する方法に完全に依存するため、これはコーディングではなく数学的な問題です。

非常に簡単な例は、単純になり得る:

  1. は、元の長さ、高さ及び幅を追加する製品ごとに同じ操作を行い、全体の最小の差を有する生成物を示し。

  2. または、合計の差が元の合計の10%を超えない場合にのみ表示できます。

  3. また、上記と同じテクニックでも、それぞれのプロパティに対して、長さ、高さ、幅ごとの差が元のプロパティの10%未満の製品(または最初の製品)を表示します。

  4. そして、「近づく」または「差を最小限に抑える」という非常に複雑な数学的モデルがあります。

詳細を入力しなくても、ここで回答は得られません。

そして、とにかく数学的ではなくプログラミングに関する質問をしないでください。

+0

多分それは数学的な問題ですが、私は実際にこれを実行する方法の助けを求めています。私はかなり初心者です。 – alexO

+0

"これを実行する" - これはまさに問題です - 誰も "ここ"が何であるかを推測することはできません。 Carl Janの答えは、これを技術的にどのように扱うかについての印象を与えてくれます。あなたが達成したいことを何らかのアイデアを持っていれば、いつでも新しい質問をして、それを実現する方法であなたの問題を分かち合いましょう。 – LBA

-1

これは何か?

SELECT * FROM `table` 
WHERE `column_length` <= length_var AND `column_width` <= width_var AND `column_height` <= height_var 
ORDER BY `product_id` ASC 
LIMIT 3 

これは、選択した測定値以下の上位3個のみを表示します。構文にエラーがあるかどうかは分かりませんが、フローが得られます

+0

LBAの答えはあなたが得られる最も近い答えです。あなたはかなりの数の行を持っているので、私が間違っていなければ、それぞれの合計を計算するのに少し時間がかかります。 – Swellar

+0

私はこれを試してみるつもりです、ありがとう。 – alexO

+0

商品IDで注文することは、OPが望んでいるものに何もしていません。エントリよりも小さい商品を見つけるだけではありません。 – Prof83

0

LBAの答えに追加するには、音量の差またはl/w/hの差のいずれかが最適です。最も近いマッチを探している場合は、条件の代わりに順序を使用する必要があります。形が異なっていても気にしない場合は、音量を調整し(whl)、音量の違いによってソートを作成します。あなたがシェイプを気にするならば、幅、高さ、長さごとに別々にこれを行う必要があります。最も近いマッチがサブジェクトの大きさから遠く離れていれば、結果が得...幸運

関連する問題