回答

收藏

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

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

我在 PostgreSQL 数据库中有四个表(a、b、c、d):6 `3 v9 G0 j7 X; A0 c
在此输入图片说明  c4 \' W: L2 I  _  i  J' d3 b
我可以用subject.id 和 project.id 连接这些表的唯一键。我的查询是:! c: D. W; p5 _. N
SELECT 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 会有空值。  L/ i+ x. r/ t# {8 X& f/ E  T
                                                               
- V1 b" I/ b/ s. f4 c/ `    解决方案:                                                                & r% K8 `( b9 _# z' `5 D
                                                                将最后一个LEFT连接更改为连接note_template = 16在ON句中添加条件:
. S6 W2 F( f+ ~# s6 i9 q+ O0 sLEFT JOIN subject_note ON subject_note.subject_id = project_subject.subject_id                      AND subject_note.note_template =
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则