2016-06-25 29 views
0

的不同列發生我想算在列commskillabilityskillinterestpresentationmethodologymaintainsclasspunctualattitude的「1」所有的發生。 我的表 '反饋' 有以下欄目:MySQL查詢數1的反饋表

  • FID-反饋我倒是
  • Tname-老師的名字
  • SNAME,主題名稱
  • Studentname-學生的名字
  • 講座班學生
  • 科 - 部分
  • commskill-通訊技巧
  • abilityskill-教學能力
  • 介紹 - 老師的演講技能
  • 方法論 - 教學方法,接着老師
  • 興趣 - 在老師的課
  • 準時學生的興趣 - 教師準時準點
  • 維護班級 - 維護班級紀律
  • 態度 - 老師對學生的態度 * tid-老師的ID

fid的值是自動增加的,所有技能的等級都在(1 - 優秀,2 - 好,3 - 平均,4 - 低於平均水平)。

我已經嘗試此查詢:

select tname,sname,count(*) as excellent from feedback where commskill=1 or attitude =1 or presentation =1 or abilityskill=1 or interest=1 or punctual =1 or maintainsclass=1 or methodology =1 group by tid; 

但得到的答覆是表現出意外和錯誤的。

回答

2

要在commskill,abilityskill,興趣,演示文稿,方法論,維護類,準時,態度等欄中獲得總共'1'的出現次數。

SELECT 
     sum(if(commskill=1,1,0) 
    + sum(if(attitude =1,1,0) 
    + sum(if(presentation =1,1,0) 
    + sum(if(abilityskill=1,1,0) 
    + sum(if(interest=1,1,0) 
    + sum(if(punctual =1,1,0) 
    + sum(if(maintainsclass=1,1,0) 
    + sum(if(methodology =1,1,0) 
    AS excellent 
    FROM feedback; 

,得到的結果爲每一位教師

SELECT 
tname 
, sname 
, sum(if(commskill=1,1,0) 
    + sum(if(attitude =1,1,0) 
    + sum(if(presentation =1,1,0) 
    + sum(if(abilityskill=1,1,0) 
    + sum(if(interest=1,1,0) 
    + sum(if(punctual =1,1,0) 
    + sum(if(maintainsclass=1,1,0) 
    + sum(if(methodology =1,1,0) 

優秀 從反饋 GROUP BY TID;