如何删除检索结果中的重复?

时间:2014-06-18 13:37:35

标签: php mysql

我需要帮助初学者在php和我的sql中,我想检索在每个级别注册的所有学生姓名(1 OR 2 OR 3或4)这是我的代码。

    <form id="form1" name="form1" method="post" action="">
  <table border="1" align="center" class="tftable">
    <?php
     $lvlid = $_GET['id'];
     $sql2 = "select * from `course` where acadlevel='$lvlid' ";
     $res2= mysql_query($sql2,$con_mark_entry);
     while($row2 = mysql_fetch_row($res2))
     {?>
     <?php } ?>
  <tr>
      <th id="h7">Serial NO.</th>
      <th id="h7">Student NO.</th>
      <th id="h7">Student Name</th>
        </tr>
  <?php
       $s=1;
       $sql ="SELECT student.stud_id,student.stud_name, course.title, enrollment.grade FROM student, course, enrollment WHERE course.acadlevel ='".$_GET['id'] ."' AND course.code = enrollment.code AND student.stud_id = enrollment.stud_id";
        $res= mysql_query($sql,$con_mark_entry);
        while($row1 = mysql_fetch_row($res)){
        ?>
    <tr>
      <td><?php echo $s?> </td>
      <td><?php echo $row1[0]?></td>
      <td id="name"><a href="report6.php?id=<?php echo $row1[1]?>"> <?php echo $row1[1]?> </td>
    </tr>
     <?php
    $s++;
    }

?>
  </table>

我的问题是例如,如果学生在1级注册三门课程,他会出现三次,我想删除这个重复。怎么样?

结果如下:

序列没有学生没有学生姓名       1 101 adam nagdy       2 101 adam nagdy       3 101 adam nagdy       4 102 shima najm

提前致谢

2 个答案:

答案 0 :(得分:0)

使用DISTINCT关键字。它会删除重复的结果行。

搜索&#34; distinct&#34;在此page

SELECT DISTINCT std.stud_id,std.stud_name, enr.grade -- , crs.title
FROM student std
LEFT OUTER JOIN enrollment enr ON std.stud_id = enr.stud_id
LEFT OUTER JOIN course crs ON crs.code = enr.code 
WHERE course.acadlevel ='YOUR_ID' 

并使用JOIN加入。 ;)它比加入WHERE更好(即使它有效)。

答案 1 :(得分:0)

尝试在查询结束时使用GROUP BY course.acadlevel

如果学生注册了3个班级,那么应该将结果减少到每个学术水平一行,而不是3个。

此外,正如John Conde所评论的那样,mysql_前缀函数已弃用,将从未来的PHP版本中删除。您应该使用MysqliPDO_MySQL。并且你不应该在MySQL查询中使用$_GET[] / $_POST或任何其他带有用户输入的变量而不对它们进行清理。