Mysql
 sql >> Datenbank >  >> RDS >> Mysql

LEFT OUTER JOIN mit Bedingungen (wo, sortieren nach)?

Probieren Sie diese Abfrage aus, sie würde Ihnen jedes Training und den neuesten Trainingsverlauf für jedes geben:

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