我有一个表,其中填充了从数据库中选择学生编号的查询中的数据。视图是这样的:
如您所见,同一条数据被多次输出。我有一个功能,无论出于何种原因,辅导员都无法完成学生,然后他们可以将学生发送给另一位辅导员。现在为了维护历史数据,我保留了所有这些数据。现在,当我回到我的学生队列时,它会显示所有当前数据(我想要的)和所有过去的历史数据(我不想要的)
这是我的 sql 语句:
try
{
$query = $dbh->prepare("SELECT
session.session_id AS id,
session.anum,
student.first,
student.last,
session.why,
session.studentcomments,
session.aidyear,
support.counselorcomments
FROM
student INNER JOIN session ON student.anum = session.anum
INNER JOIN session_status ON session.status = session_status.status
LEFT JOIN support ON session.session_id = support.session_id
WHERE session.status = 0 OR session.status = 2");
$query->execute();
$result = $query->fetchall();
}
catch (PDOException $e) {
error_log($e->getMessage());
die($e->getMessage());
}
现在我设置数据库的方式是我希望它保持工作状态。我只是认为我查询数据的方式是问题所在。
这是mysql中数据的图片:
编辑
现在,由于该问题已得到解决,因此我遇到了一个错误,即每当发生插入时(更新 support.starttime 时间戳),上述记录就会消失,这是我更新的 sql
$query = $dbh->prepare("SELECT session.session_id AS id, session.anum, student.first, student.last, session.why,
session.studentcomments, session.aidyear, support.counselorcomments FROM student LEFT JOIN
session ON student.anum = session.anum LEFT JOIN session_status ON
session.status = session_status.status LEFT JOIN support ON session.session_id = support.session_id
WHERE (session.status) IN (0) OR (session.status) IN (2)
AND support.starttime = (SELECT MAX(support.starttime) FROM support INNER JOIN session ON session.session_id =
support.session_id)");