私は2つのテーブル、つまりスタッフとスタッフの試験時間表に参加したいと考えています。スタッフはN回の試験に参加できます。私の結果は、スタッフID、スタッフ名、最後に完了した試験の終了時刻でなければなりません。SQLクエリが正常に動作しない
私のテーブルの構造は以下で
スタッフテーブル
結果セットのstaff_id staff_full_name staff_status
500 Sakthi active
550 Siraj active
600 Shihab K H active
620 John David active
670 Javed Akthar active
examtimeテーブル
examtime_id examtime_staffid examtime_endtime
100 500 2014-10-10
101 600 2016-05-01
102 670 2016-06-10
103 670 2014-04-01
104 670 2016-06-13
105 670 2016-06-11
SQLクエリは、以下の
SELECT S.staff_id, S.staff_full_name, ET.examtime_endtime
FROM staffs S LEFT JOIN examtime ET ON ET.examtime_staffid = S.staff_id
WHERE 1 AND S.staff_status = 'active' GROUP BY S.staff_full_name ORDER BY S.staff_full_name ASC , ET.examtime_endtime DESC
ですが、私はGEです結果セットを以下のように設定します。試験の終了時刻にかかわらず、試験時間表の最初のレコードをフェッチしています。結果セット(Javed Akthar最新試験日は2016-06-13ですが、2016-06-10を取得しています)。
500 Sakthi 2014-10-10
600 Shihab KH 2016-05-01
670 Javed Akthar 2016-06-10
あなたはそれが意味するようにしたいので、あなたの 'GROUP BY'」は、問題を引き起こしている:集計に含まれていないと
GROUP BY
ではなく、MySQLはその列の任意の値を選択した列)を持つことができます実際には[それをしない](https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html): "...私の心を読んでください"この場合、サーバは各グループから任意の値を自由に選ぶことができるので、同じでなければ選択された値は不確定で、おそらくあなたが望むものではありません。 –