2011-02-08 71 views
1

我想显示StudentNo,SubjectCode,SubjectDescription和成绩,但是当学生失败时,它会为所有字段生成另一个条目,所以我想要显示studentNo,SubjectCode和SubjectDescription一次,同时显示2个成绩该学生.. 例的特定主题: enter image description here如何查看字段的双重输入并仅显示其他字段的一个输入项?

我希望仅显示这样的:( 07-08-061 EN110 5/1) 这里是我的代码:

**

mysql_select_db($database_strawman, $strawman); 
$query_Recordset1 = "SELECT curriculum.SCode, curriculum.SDesc, grade.Grade, students.StudNo FROM students INNER JOIN (curriculum INNER JOIN grade ON curriculum.SCode = grade.GSCode) ON students.StudNo = grade.GStudNo GROUP BY StudNo"; 
$Recordset1 = mysql_query($query_Recordset1, $strawman) or die(mysql_error()); 

$totalRows_Recordset1 = mysql_num_rows($Recordset1); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<table width="200" border="1"> 
    <tr> 
    <td>Subject Code</td> 
    <td>Subject Description</td> 
    <td>Grade</td> 
    <td>Student Number</td> 
    </tr> 
    <?php while($row_Recordset1 = mysql_fetch_assoc($Recordset1)){ ?> 
    <tr> 

    <td><?php echo $row_Recordset1['SCode']; ?></td> 
    <td><?php echo $row_Recordset1['SDesc']; ?></td> 
    <td><?php echo $row_Recordset1['Grade']; ?></td> 
    <td><?php echo $row_Recordset1['StudNo']; ?></td> 

    </tr> 
    <?php } ?> 


</table>&nbsp;</p> 
</body> 
</html> 
<?php 
mysql_free_result($Recordset1); 
?> 
** 

回答

0

为您汇总功能尝试使用GROUP_CONCAT代替SUM

SELECT c.SCode, c.SDesc, GROUP_CONCAT(g.Grade), s.StudNo 
    FROM students s 
     INNER JOIN grade g 
      ON s.StudNo = g.GStudNo 
     INNER JOIN curriculum c 
      ON g.GSCode = c.SCode 
    GROUP BY c.SCode, c.SDesc, s.StudNo 
0

,你可以添加一个where子句 像

where grade > 1 

(插入最小等级通过)

+0

现在看来,这会只显示大于1的等级。但也想打印出通过等级的失败等级..所以输出将是一个科目的2个等级.. – PiDO 2011-02-08 15:46:52

0

集团通过学号和密码,使用GROUP_CONCAT得到罗列出来的2(+)等级分组。

SELECT *, group_concat(grade) as grades FROM students GROUP BY GSTudNo, GSCode 

那是基础,使用您的查询它会是这样的:

SELECT curriculum.SCode, curriculum.SDesc, SUM(grade.Grade) grade_total, students.StudNo, group_concat (grade.Grade) as grades 
FROM students 
INNER JOIN (curriculum INNER JOIN grade ON curriculum.SCode = grade.GSCode) 
ON students.StudNo = grade.GStudNo 
GROUP BY StudNo, GSCode 
+0

我怎么能在加入声明中使用它? – PiDO 2011-02-08 15:47:51

+0

@PiDO我编辑了我的答案以使用您的查询。你也将不得不改变它所说的PHP echo $ row_Recordset1 ['Grade'];说echo $ row_Recordset1 ['grades']; – profitphp 2011-02-08 16:05:00

相关问题