0

人のID(athleteid)に基づいてレース結果のリストを表示するクエリがあります。時間(パフォーマンス)とイベント(eventid)の順に人のレースを一覧表示するようにデータベースにクエリを実行しましたが、後で結果をグループ化して最速のままにするために、これをサブクエリとして設定するのに苦労しています。各eventidのパフォーマンス。これは私がこれまでに持っているものです:

$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を使用できるようにしましたが、成功しませんでした。これは私がそれで行こうとしていたところです:

$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");

ただし、これにより、次のようなエラーが発生します。「グループステートメント」の不明な列「t1.eventid」

どんな助けでも大歓迎です

4

2 に答える 2

0

eventidサブクエリで を選択していません。そこにない場合、どのようにグループ化できますか?

SELECT events.eventid,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
.......
于 2012-05-11T11:32:44.083 に答える
0

サブクエリにその列がないため、サブ選択に列を追加してみてください。

$id = $_GET['id'];
$query = sprintf("SELECT * FROM (SELECT events.eventid, 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");
于 2012-05-11T11:32:59.883 に答える