2016-12-27 33 views
1

比較值來填充SQL列我有兩個表:如何通過從一個表對另一個

Vacation_days

id name  work_days tier 
-------------------------------- 
1 John  366  Null 
2 Mike  764  Null 
3 Josh  1163  Null 

Vacation_algorithm

day1  day2  tier 
------------------------- 
    0  184  1 
    185  364  2 
    365  5999  3 
6000 1000000  4 

我想要遍歷vacation_days表中的每一行並查看va中work_days的哪些層cation_days對應於(work_days必須位於start_day和end_day之間)。

然後,我想將該層數放置在vacation_days中包含的當前填充空值的層列中。

我已經試過這樣:

Select tier 
From Vacation_Algorithm 
Where (Select work_days 
     From vacation_days 
     Where work_days = 366) between day1 and day2. 

這將返回正確的輸出,這與第3級列。然而,我希望有一個公式來與我Vacation_days表中的所有行做到這一點。

回答

2

只需使用join。我會選擇一個left join,所以如果沒有匹配,沒有排在後面:

select vd.*, va.tier 
from vacation_days vd left join 
    vacation_algorithm va 
    on vd.work_days between va.day1 and va.day2; 
+0

感謝這工作!要使用從vacation_algorithm填充的層來更新vacation_days中的層列,可以這樣做:更新vacation_days set vacation_days.tier =(從vacation_days選擇va.tier vd在va.day1和va.day2之間的vd.work_days上加入vacation_algorithm va) ; –

相關問題