2012-08-11 57 views
1

查找表: -如何使用查找

FROM_METER TO_METER COST 
1    5   0.004 
6    10  0.006 
11   20  0.012 

所需的輸出: - (此處爲15和7例如成本輸出從查找高手請進)

METER COST 
15  0.012 
7  0.006 
etc.... 

回答

1
select ? Meter, cost from Lookup 
where ? > = FROM_METER 
and ? < = TO_METER 

更換與您的參數?

+0

或'between' ... – Ben 2012-08-11 08:48:34

+0

感謝alfasin! – user1589743 2012-08-11 09:34:08

+0

@Ben - 你說得對。我不喜歡使用'between之間'的原因是很多人對它的包容性事實感到困惑,我喜歡我的代碼簡單明瞭;) – alfasin 2012-08-13 18:36:06

2

查找表通常用於爲常規數據提供代碼或參考值。假設你的業務表是你叫MASTER你會加入其記錄到您的查找這樣的一個:

select m.meter 
     , l.cost 
from master m 
     join lookup l 
      on (m.meter between l.meter_from and l.meter_to) 

你的數據模型ppears有一個問題:它並不能保證在每米MASTER表將在查找表中找到匹配的記錄。這就是爲什麼更常用的方法是使用類型或類別(如'便宜','合理','昂貴')。

很明顯,如果MASTER表沒有匹配的行,我們很難判斷你的模型是否正確,但你可能應該考慮做什麼。也許這種關係是在應用程序中強制執行的,但根據我的經驗,這種方法很難使其具有防彈性。