我知道有很多关于子查询的问题。我已经阅读了很多,并尝试使用满足我需求的答案,但由于某种原因我无法让它发挥作用。
我的表包含练习结果列表。 “bruger_id”是用户 ID “prog_oevelse_id”是练习的 ID “kg_km”是用户举起的公斤数或距离 “reps_tid”是用户举起多少公斤的重量或他使用了多少分钟。
这是我的 table :
我需要它来列出他表现最好但每次练习只有一个的用户结果。我试过:
$results = $pdo->query("
SELECT * FROM (
SELECT * FROM myw_resultat
ORDER BY kg_km DESC
) t
WHERE bruger_id = '$user_id'
GROUP BY prog_oevelse_id
");
但是当我回显上面的查询时:
$SL = 0;
foreach($results as $key => $row) {
echo $row['prog_oevelse_id'];
echo " - ";
echo $row['kg_km'];
echo " / ";
echo $row['reps_tid'];
echo "<br>";
}
它给了我这个结果:
我的预期输出是:
有人可以帮我解决这个问题吗?
最佳答案
$pdo->query("
SELECT R.prog_oevelse_id, R.kg_km, R.reps_tid
FROM myw_resultat R
JOIN ( SELECT prog_oevelse_id, MAX(kg_km) as m_kg_km
FROM myw_resultat
WHERE bruger_id = '$user_id'
GROUP BY prog_oevelse_id ) as M
ON R.prog_oevelse_id = M.prog_oevelse_id
AND R.kg_km = M.m_kg_km
WHERE R.bruger_id = '$user_id'
关于php - Order by before Group by 子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47096412/