Mysql
 sql >> Base de données >  >> RDS >> Mysql

LEFT OUTER JOIN avec des conditions (où, trier par) ?

Essayez cette requête, elle vous donnera chaque entraînement et l'historique d'entraînement le plus récent pour chacun :

SELECT tc.id, tc.name, tc.order, 
th.id as history_id, th.finished_at, th.score
FROM trainings tc
LEFT OUTER JOIN training_histories th ON th.training_id = tc.id 
    and th.id =
    (SELECT th1.id from training_histories th1 where th1.training_id = tc.id
     and th1.finished_at is not null
     order by th1.finished_at desc limit 1)
WHERE tc.id > 4
AND tc.id < 8
GROUP BY tc.id
ORDER BY tc.order_by ASC, tc.id ASC