2012-08-04 56 views
0

我在考慮兩個表中的以下列,其中clicks_列爲空,並且應該填充從mwhen和mwho列中獲悉的數據。連接應該在mwho和user_id上。SQL內部加入數據修改以填充空列

學生

USER_ID,clicks_jan,clicks_feb,clicks_mar,clicks_apr

使用

mwho,mwhen

我的問題:

  1. 我是否需要選擇語句,或者可以立即從「更新學生」移動以設置(...)更新列?
  2. 當我要求它從兩個表中同時提取信息來執行計算時,SQL會發出抱怨 - 至少,當我聲明「FROM students,usage」時會發生SQL抱怨。有沒有一個清晰的解決方法來更新一個表與修改信息從另一個?

我到目前爲止的刪節版本。 (因爲列更新都是相似的,所以我只在這裏舉一個例子。)

update students 

set clicks_jan = 

    sum(
     case 
     when cast(strftime('%j', mwhen) as integer) < 32 then 1 
     else 0 end) 
from students, usage 
inner join students.user_id = usage.mwho; 

任何幫助,非常感謝。

+0

您正在使用什麼RDBMS? – 2012-08-04 02:23:22

回答

1

我不正是你正在嘗試,但這裏是我的刺吧:

UPDATE students set 
    Clicks_jan = (SELECT case when cast(strftime('%j',mwhen) AS integer) < 32 
          then 1 else 0 end 
       FROM usage 
       WHERE mwho=student.user_id); 
+0

謝謝!我做了一個小改動,得到它,我想要的方式:Clicks_jan =(SUM(施放時(的strftime( '%J',mwhen)AS整數)<32 然後1點否則爲0結束) 從使用中 WHERE mwho =學生。用戶名); – skirmishdirmish 2012-08-04 04:09:51