簡體   English   中英

一次點擊即可選擇所有多對多記錄以及父表

[英]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'
              }
              ...
        }]
    }
    ...
}]

問題

  1. 我可以通過點擊數據庫來獲得此結果嗎?
  2. 如果是,如何使用SQL查詢獲得此結果?

好的,最后,我找到了這個問題的答案:

答案是: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM