2014-04-23 73 views
0

我想比較來自mysql上2個類似表的實際結果和預測。比較mysql表並更新值

真正

id | data1| data2 | 

用戶

id | data1| data2 | points 

排名

id | user| total points 

我要做到以下幾點:

if (real.data1 = user.data1) AND (real.data2 = user.data2) 
update user set points=8 where id=1 
else if(real.data1 > user.data1) AND (real.data2 > user.data2) 
update user set points=4 where id=1 
else if (real.data1 = real.data2) AND (user.data1 = user.data2) 
update user set points=4 where id=1 
    else if (real.data1 < user.data1) AND (real.data2 < user.data2) 
    update user set points=4 where id=1 
     else 
      update user set points=0 where id=1  
    sum all values from points and update ranking table 

這可能嗎?

+0

這很混亂。如果您提供一些樣本數據和期望的輸出,可能會有所幫助。 –

+0

例如,比賽的真正結果是home_team 2(data1) - 0(data2)客隊 和我的預測(用戶表)是2 - 0我贏了8分,如果我的預測是3 -0我贏了4分,如果我的預測是0 - 1或2-2,0分, – andoni

回答

0

我相信下面將爲你的問題上半年工作,但我沒有測試它:

UPDATE `user` u 
INNER JOIN `real` r ON (u.id = r.id) 
SET u.points = IF(r.data1 = u.data1 and r.data2 = u.data2, 
        8, 
        IF(r.data1 > u.data1 and r.data2 > u.data2, 
         4, 
         IF(r.data1 = r.data2 and u.data1 = u.data2, 
          4, 
          IF(r.data1 < u.data1 and r.data2 < u.data2, 
           4, 
           0) 
         ) 
         ) 
        ) 

MySQL docs有關IF語句,如果這沒有意義。

+0

謝謝,它的工作原理! – andoni