在SQL中加入一对多关系

时间:2010-03-18 18:40:56

标签: sql

我正在制作一个工具来跟踪住宅/参议院代表的电话,我在这里有2个重要的表:

代表

rep_id
rep_name # and more info

评论

rep_id
status # enum about result of contact
comment

我想查询加入最新关联reps的所有comments,并在某些情况下加入特定comments的{​​{1}},但可能没有status {1}}已与comments相关联。

谢谢!

2 个答案:

答案 0 :(得分:4)

您需要一些方法来区分最新评论,因此我编写了一个新列:comments.commentDate,或者使用某个自动编号/标识使用如下查询:

SELECT
    r.*,c.*
    FROM reps r
        LEFT OUTER JOIN (SELECT
                             rep_id,MAX(commentDate) AS MaxDate
                             FROM comments
                             GROUP BY rep_id
                        ) m On r.rep_id=m.rep_id
        LEFT OUTER JOIN comments c ON r.rep_id=c.rep_id AND m.MaxDate=c.commentDate
    ORDER BY r.rep_name

答案 1 :(得分:1)

编辑:

使用左连接获取所有代表,

SELECT reps.rep_id, comments.comment
FROM reps
LEFT JOIN comments
ON reps.rep_id=comments.rep_id