2013-12-22 62 views
0
<?php 
$sql="SELECT SUM(`2014jan1`,`2014jan2`,`2014jan3`,`2014jan4`,`2014jan5`,`2014jan6`,`2014jan7`,`2014jan8`,`2014jan9`,`2014jan10`,`2014jan11`,`2014jan12`,`2014jan13`,`2014jan14`,`2014jan15`,`2014jan16`,`2014jan17`,`2014jan18`,`2014jan19`,`2014jan20`,`2014jan21`,`2014jan222`,`2014jan23`,`2014jan24`,`2014jan25`,`2014jan26`,`2014jan27`,`2014jan28`,`2014jan29`,`2014jan30`,`2014jan31`) as `total` FROM `jan` WHERE class like '$class%' and roll like'$roll')"; 
$row=mysql_fetch_array($sql) or die(mysql_error()); 
?> 

這是一個正確的語法?或檢查我的代碼?謝謝 ?如何計算sum數據庫表所在列的列數?

+0

添加一個GROUP BY .. – Mihai

+0

不,這是不正確的語法(SUM()函數只接受一個參數:一個表達式被每個組的求和聚合)。你究竟想達到什麼目的?你的桌子是否包含所有這些列?如果是這樣,你應該[規範](http://en.wikipedia.org/wiki/Database_normalization)你的模式。 – eggyal

回答

0

你有月表中的每一天的表字段?你應該首先重組你的桌子。即,創建帶有字段的表格:班級,年度,月份,日期,考勤。 所以,而不是存儲ZZ數據在XX類和YY卷可以說2014jan4場,你將存儲你的數據是這樣的:

Field: class roll year month day attendance 
Value:  XX  YY 2014  jan  3   ZZ 

然後你就可以查詢它想:

$sql="SELECT SUM(attendance) as total FROM YourTable WHERE class like '$class%' and roll like '$roll' and year like '2014' and month like 'jan')";

不知道你想要完成什麼,以上只是讓你走向正確方向的想法。