データベースからstudentid番号を選択するクエリからのデータが入力されたテーブルがあります。ビューはそのようなものです:
ご覧のとおり、同じデータが複数回出力されています。私には、何らかの理由でカウンセラーが学生を終えることができず、その学生を別のカウンセラーに送ることができるという特徴があります。今、履歴データを維持するために、私はそのすべてのデータを保持しています。学生の質問に戻ると、現在のすべてのデータ(必要なもの)と過去のすべてのデータ(不要なもの)が表示されます。
これは私の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)");