2017-03-02 29 views
0

我在解決此問題時遇到問題。顯示數據庫中最接近的匹配項

請原諒我的英語。

這是我試圖實現的:當你輸入一組測量結果,例如長度300mm高度400mm寬度55mm我想要那些最接近的匹配,比如頂部3?所以如果另一種產品有這些測量長度310毫米高度410毫米寬度60毫米我想程序顯示這個產品,因爲它接近原來的測量。我的數據庫有超過300種不同的測量產品。我希望程序向您展示產品名稱和產品尺寸。

對不起,如果這太模糊。

+1

是的,這很模糊。你可以給出更好的輸入和輸出相關的具體表達式(數組?字符串?XML?)和你已經做了什麼**試圖解決它**? – tadman

+0

「我無法正常工作。」也許這不是正確的措辭,我的意思是說我有一個想法,但不知道該怎麼做。 – alexO

回答

1

這不是一個編碼,而是一個數學問題,因爲它完全取決於如何定義'close'。

一個非常簡單的例子可以是簡單地:

  1. 加起來的長度,高度和原始的寬度,執行爲每個產品是相同的,並顯示其具有的總的最小差的產品。

  2. 或者只有在總差異不高於原總數的10%的情況下才能顯示。

  3. 或者你也可以使用與上面相同的技術,但是對於每個屬性:顯示產品(或第一個產品)的每長度,高度和寬度的差值低於原始屬性的10%。

  4. 那裏有非常複雜的數學模型,試圖「靠近」或「最小化差異」。

沒有提供進一步的細節,你不會在這裏得到答案。

請不要問數學,但編程問題無論如何。

+0

嗯,也許這是一個數學問題,但我也正在尋找如何實際執行此操作的幫助。我是新手。 – alexO

+0

「執行這個」 - 這正是問題 - 沒人能猜到這是什麼。卡爾揚的回答給你一些關於如何在技術上應對這個問題的印象。祝你好運 - 隨時隨時提出一個新問題,如果你有一些想法想要達到什麼目的,並分享你的問題,以實現它。 – 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)並根據音量差異進行排序。如果你關心形狀,那麼你需要單獨做這個寬度,高度和長度......儘管你仍然應該使用某種形式的條件,以便如果最接近的匹配距離主題維度很遠,那麼你不需要得到任何結果...祝你好運