PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Unisciti a più tavoli usando distinto su

Come ho affermato nei commenti:è esattamente la stessa cosa di Inner join usando distinto su . Devi semplicemente aggiungere un altro join e un altro ORDER BY gruppo (cd.created_at DESC )

demo:db<>violino

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

Nota :Non sono sicuro di quale sia il emp_id colonna in class_detail è per. Sembra non ben progettato (questo anche perché è sempre 1 nel tuo esempio.) Dovresti verificare se ne hai davvero bisogno.