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

Joindre sur plusieurs tables en utilisant distinct on

Comme je l'ai dit dans les commentaires :c'est exactement la même chose que dans Jointure interne utilisant distinct on . Il vous suffit d'ajouter une autre jointure et un autre ORDER BY groupe (cd.created_at DESC )

démo :db<>violon

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

Remarque :Je ne suis pas sûr de ce que le emp_id colonne dans class_detail est pour. Il ne semble pas bien conçu (c'est aussi parce qu'il est toujours 1 dans votre exemple.) Vous devriez vérifier si vous en avez vraiment besoin.