Mysql - 仅在输出中重复行

时间:2015-04-08 12:50:10

标签: php mysql select while-loop duplicate-data

我厌倦了从表中只选择一个名称,但问题是输出重复3或4次,结果相同(例如,在phpmyadmin中我只有5行,当我调用它时输出重复5行是20行

这是我用过的代码

    <?php
$sql = "SELECT * FROM attendance, users ";
$result = $db->prepare($sql);
$result->execute();
while ($row = $result->fetch()) {
    $status = $row['status'];
    $notes = $row['notes'];
    $datetime= $adminfunctions->displayDate($row['timestamp']);
    echo "<tr><td><a href='" . $configs->getConfig('WEB_ROOT') . "admin/adminuseredit.php?usertoedit=" . $row['username'] . "'>" . $row['student_name'] . "</a></td>";
    echo "<td><div class='shorten'><a href='#'>" . $status . "</a></div></td><td>" . $notes . "</td><td>" . $datetime . "</td>";
    echo "<td class='text-center'><div class='btn-group btn-group-xs'><a href='".$configs->getConfig('WEB_ROOT')."admin/adminuseredit.php?usertoedit=".$row['username']."' title='Edit' class='open_modal btn btn-default'><i class='fa fa-pencil'></i> View</a>";
    echo"</tr>";
}
?>

我想删除这个重复的结果,只选择John Doe,当我到他的个人资料时只显示他的出席情况

3 个答案:

答案 0 :(得分:1)

您需要使用内部联接JOIN两个表。大概是你的用户&#34; table将有一个主键,它将加入&#34;出勤&#34;表,像&#34; student_id&#34;。

WHERE users_id = students_id

答案 1 :(得分:0)

如果您的用户有ID,并且在调用SQL查询之前您知道要为其出席的用户的ID,则可以将SQL查询更改为

SELECT * FROM Users U JOIN Attendance A on U.id = A.user_id where U.id = [insert userid]

想想就是这样,但这只是我的头脑。

答案 2 :(得分:0)

您正在获取duplicatew,因为您正在为两个表(用户和出勤)执行select语句。 User表将具有主键(user_id),并且出勤表将具有外键(user_id)。您需要使用此外键关系加入它们,如下所示:

Select * from User u JOIN     Attendance a ON u.user_id = a.user_id;

这将为您提供两个表中用户相同的行。

我希望这会有所帮助。