2017-11-01 1 views
-1

次のパラメータを持つマシンの設定データベースがあります。複数のパラメータSQLクエリからのデータの補間

外径内径(ID)|パワー|スピード| Dwell

新しい素材サイズを使用する場合、新しい素材に対して行う必要のある調整を最小限に抑えるため、最も近い値から設定を補間したいと考えています。

データベースに存在しないODとIDを指定すると、データベースに最も近い値>と<を照会する最適な方法は、ODとIDの組み合わせとその値から新しいサイズの設定が補間されます。

+2

あなた自身で試しましたか?開始するコード? – Ibo

+0

「ベスト」は主観的です。 –

+0

@ Jaredの答えで示唆されているように、あなたはおそらく、その機械に関する知識を持った人と話をして、 "近所"の計算にどのような機能を使うべきかを知るべきです。マシンが実行している操作に応じて、ODがIDよりもはるかに重要であるか、またはその逆である可能性があります。 –

答えて

2

あなたは、各行と所望の値との「距離」を計算することができる場合、あなたはそれで設定された、あなたの結果を注文することができ、そしてあなただけの「最も近い」結果たい場合は1に、結果セットを制限:

SELECT * FROM settings ORDER BY my_distance_calculation(od, id, :given_od, :given_id) LIMIT 1; 

my_distance_calculationは、関数である必要はありません。これは、データベースの方言の有効な式です。たとえば、これはちょうどその与えられた値から各パラメータの絶対差の合計を使用しています。

SELECT * FROM settings ORDER BY ABS(od - :given_od) + ABS(id - :given_id) LIMIT 1; 

SQLiteは内蔵パワー機能はありませんが、それがなかったならば、あなたはユークリッド距離を計算することができます:

SELECT * FROM settings ORDER BY POW(POW(od - :given_id, 2) + POW(id - :given_id, 2), 0.5) LIMIT 1; 
関連する問題