PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Verknüpfen Sie mehrere Tische mit „distinct on“.

Wie ich in den Kommentaren gesagt habe:Es ist genau dasselbe wie in Innerer Join mit „distinct on“ . Sie müssen lediglich einen weiteren Join und einen weiteren ORDER BY hinzufügen Gruppe (cd.created_at DESC )

demo:db<>fiddle

SELECT DISTINCT ON (ed.emp_id)
    e.emp_id, e.emp_no, e.emp_ref_no, ed.class_no, cd.*
FROM 
    emp_detail ed
JOIN emp e ON e.emp_id = ed.emp_id
JOIN class_detail cd ON ed.class_no = cd.class_no
ORDER BY ed.emp_id, ed.created_at DESC, cd.created_at DESC

Hinweis :Ich bin mir nicht sicher, was die emp_id ist Spalte in class_detail ist für. Es scheint nicht gut gestaltet zu sein (das liegt auch daran, dass es immer 1 ist in deinem Beispiel.) Du solltest prüfen, ob du es wirklich brauchst.