2012-10-31 67 views
-1

我有學生表包含字段:值獲取表中的字段和值

firstname : John 
lastname : Doe 
english-grd : 87 
math-grd : 80 
science-grd : 85 
total-grade : 0 

我的問題是我會如何獲取只能用「-GRD」的領域,總結有總。

回答

2

查詢:

Select english-grd,math-grd,science-grd,(english-grd+math-grd+science-grd) as tot from table 
+0

如果我加入像pe_grd另一個問題,我不想重寫我的代碼?我認爲這種方法是行不通的。 – arjay0601

+2

@ arjay0601 - 你說什麼是不可能的,甚至似乎不存在,因爲如果你添加或刪除表中的列,那麼你正在修改該表的內部結構,這確實不獨立於其餘的環境。 – Lion

+0

你打算使用PHP嗎? –

0
update tableName set `total-grade` = (
`english-grd` + `math-grd` + `science-grd` 
) 
+0

如果我添加了另一個像pe_grd這樣的主題,並且想在重寫代碼時將其與它相加,該怎麼辦? – arjay0601

+0

http://stackoverflow.com/questions/1448192/can-a-mysql-select-statement-work-without-specifying-column-names –

0
// this example just update one row 
$student_id = 1; // example only 
$res=mysql_query("SELECT * FROM Student where student_id='" . $student_id . "'"); 
$field_count = mysql_num_fields($res); //count field numbers 
$total_grades = 0; 
for ($i = 0; $i < $field_count; $i++) 
{ 
    $field_name=mysql_field_name($res, $i); 
    if (substr($field_name,-4) == '-grd') 
    { 
     $total_grades = $total_grades + mysql_result($res,0,$i); // 0 refer to first row ...there is only one row from $res...$i is offset of the column 
    } 
} 
mysql_query("update Student SET total-grade='" . $total_grades . "' where student_id='" . $student_id . "'"); 
+0

對於多行,你應該使用'$ table_rows = mysql_num_rows($ res );'並使用另一個循環...我希望它能起作用! –