回答

收藏

连接表并仅添加具有特定值的列

技术问答 技术问答 117 人阅读 | 0 人回复 | 2023-09-12

我在 PostgreSQL 数据库中有四个表(a、b、c、d):
; M/ J( G! c$ P) H在此输入图片说明
6 e6 R& i: t0 \6 u8 n  G( j8 T& {7 Z我可以用subject.id 和 project.id 连接这些表的唯一键。我的查询是:
1 @4 }1 e; @, B7 }; C7 MSELECT subject_id,firstname,lastname,national_id,project_title,project_id,note_templateFROM project_subject  JOIN subject ON subject.id = project_subject.subject_id  JOIN project ON project.id = project_subject.project_id  JOIN subject_note ON subject_note.subject_id = project_subject.subject_idWHERE project_id = xxxx我的问题是表 d (subject_notes) 一个主题可以有多个注释(varchar) 加上可选 note_template (int)。我想加入包含subject_id、firstname、lastname、national_id、project_title、project_id和note_template列表。当我加入四个表时,我得到了几个相同的主题行和不同的注释。我想要一个表格,每个主题只列出一次,只列出 note_template=直到16 才将值添加到最后一列。其他主题 note_template 会有空值。7 X% p: o7 X) x; x" h0 H. }
                                                                . W1 S, g1 T. {
    解决方案:                                                               
) y+ e8 N# L& N& V                                                                将最后一个LEFT连接更改为连接note_template = 16在ON句中添加条件:% B' T5 v( I! Q
LEFT JOIN subject_note ON subject_note.subject_id = project_subject.subject_id                      AND subject_note.note_template =
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则