![](/img/trans.png)
[英]Select records with one-to-many relationship where all of the many are in a list
[英]select all many to many records alongside with parent table in one hit to database
我有一個三張桌子(Postgresql):
ModelA:
model_a_id
item1
item2
ModelB:
model_b_id
item1
item2
ModelA_ModelB:
model_a_id foreign_key to ModelA
model_b_id foreign_key to ModelB
好
我想選擇與ModelB有所有關系的All ModelA。
我想要的是:
[{
Record1ModelA: {
item1: 'A',
item2: 'B',
modelBList: [{
Record1ModelB: {
item1: 'C',
item2: 'D'
},
Record2ModelB: {
item1: 'E',
item2: 'F'
}
...
}]
},
Record2ModelA: {
item1: 'G',
item2: 'H',
modelBList: [{
Record1ModelB: {
item1: 'I',
item2: 'G'
},
Record2ModelB: {
item1: 'K',
item2: 'L'
}
...
}]
}
...
}]
問題 :
好的,最后,我找到了這個問題的答案:
答案是: json_agg
中的json_agg
SELECT ModelA.model_a_id, ModelA.item1, ModelA.item2, json_agg(mb.*)
FROM ModelA
LEFT JOIN ModelA_ModelB as mab on ModelA.model_a_id = mab.model_a_id
LEFT JOIN ModelB as mb on mb.model_b_id = mab.model_b_id
GROUP BY ModelA.model_a_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.