人のID(athleteid)に基づいてレース結果のリストを表示するクエリがあります。私は時間(パフォーマンス)とイベント(eventid)の順番で人のレースを列挙するようにデータベースを照会しましたが、後で結果をグループ化して最速で私を残すために、これをサブクエリとして設定するのには苦労しています各eventidのパフォーマンス。これは今まで私が持っているものです:MySQLサブクエリグループ
$id = $_GET['id'];
$query = sprintf("SELECT events.eventcode, meetings.meetingid, meetings.meetingname, meetings.location, meetings.meetingdate, DATE_FORMAT(meetings.meetingdate,'%%d %%b %%Y') AS date, results.performance, results.unit, results.wind, agegroups.agegroup
FROM results
JOIN athletes ON athletes.athleteid = results.athleteid
JOIN meetings ON meetings.meetingid = results.meetingid
JOIN events ON events.eventid = results.eventid
JOIN agegroups ON agegroups.agegroupid = results.agegroupid
WHERE results.athleteid='$id' AND events.eventtype = 'track' ORDER BY results.eventid asc, results.performance asc, meetings.meetingdate desc");
これはうまくいき、すべての関連エントリが正しい順序で表示されます。私はサブクエリに入れて、GROUP BYを使用できるようにしましたが、成功しませんでした。これは、私はそれで行くことにしようとしていたところである:任意のヘルプは大幅に
を高く評価している不明な列「t1.eventidを」「グループの声明」に:
$id = $_GET['id'];
$query = sprintf("SELECT * FROM (SELECT events.eventcode, meetings.meetingid, meetings.meetingname, meetings.location, meetings.meetingdate, DATE_FORMAT(meetings.meetingdate,'%%d %%b %%Y') AS date, results.performance, results.unit, results.wind, agegroups.agegroup
FROM results
JOIN athletes ON athletes.athleteid = results.athleteid
JOIN meetings ON meetings.meetingid = results.meetingid
JOIN events ON events.eventid = results.eventid
JOIN agegroups ON agegroups.agegroupid = results.agegroupid
WHERE results.athleteid='$id' AND events.eventtype = 'track' ORDER BY results.eventid asc, results.performance asc, meetings.meetingdate desc) AS t1
GROUP BY t1.eventid");
しかし、これは私に述べてエラーになります
こんにちは、あなたはMySQLでは 'GROUP BY'を使用する場合は、 'Group By'の' fieldname'は 'selectedカラム'になければなりません。 'Select *、t1.eventid from(select..' ..)を使ってください –