Anasayfa / Database / Postgresql / Postgresql Master Detail Query to Json

Postgresql Master Detail Query to Json

Bazen yazdığımız bir sorguyu json olarak çıktı vermek isteriz

create table testfatura(
    id serial primary key not null,
    fatura_no varchar(10) not null,
    aciklama varchar(100) not null
);

create table testfatura_detay(
    id serial primary key not null,
    testfatura_id int not null references testfatura(id),
    stokkodu varchar(50),
    stokadi varchar(50)
);



insert into testfatura (fatura_no,aciklama) 
values ('0001','Deneme 1 Faturası');

insert into testfatura (fatura_no,aciklama) 
values ('0002','Deneme 2 Faturası');
    

insert into testfatura_detay(testfatura_id,stokkodu,stokadi)
values 
(1,'STK001','Elma');

insert into testfatura_detay(testfatura_id,stokkodu,stokadi)
values 
(1,'STK002','Armut');

insert into testfatura_detay(testfatura_id,stokkodu,stokadi)
values 
(1,'STK003','Kiraz');

insert into testfatura_detay(testfatura_id,stokkodu,stokadi)
values 
(2,'STK004','Bilgisayar');

insert into testfatura_detay(testfatura_id,stokkodu,stokadi)
values 
(2,'STK005','Mouse');

insert into testfatura_detay(testfatura_id,stokkodu,stokadi)
values 
(2,'STK006','Klavye');

Sorgumuz

SELECT 
json_build_object
('Faturalar',json_agg(json_build_object(
'FaturaNo',tf.fatura_no,
'Aciklama',tf.aciklama,
'FaturaDetayList',(select json_agg(json_build_object(
'StokKodu',tfd.stokkodu,
'StokAdi', tfd.stokadi)) from testfatura_detay tfd where tfd.testfatura_id = tf.id )
)
)
)
FROM testfatura tf
where tf.id in (1,2)

Çıktımız:

{
    "Faturalar": [
        {
            "FaturaNo": "0001",
            "Aciklama": "Deneme 1 Faturası",
            "FaturaDetayList": [
                {
                    "StokKodu": "STK001",
                    "StokAdi": "Elma"
                },
                {
                    "StokKodu": "STK002",
                    "StokAdi": "Armut"
                },
                {
                    "StokKodu": "STK003",
                    "StokAdi": "Kiraz"
                }
            ]
        },
        {
            "FaturaNo": "0002",
            "Aciklama": "Deneme 2 Faturası",
            "FaturaDetayList": [
                {
                    "StokKodu": "STK004",
                    "StokAdi": "Bilgisayar"
                },
                {
                    "StokKodu": "STK005",
                    "StokAdi": "Mouse"
                },
                {
                    "StokKodu": "STK006",
                    "StokAdi": "Klavye"
                }
            ]
        }
    ]
}

 

 

 

Hakkında ibrahim

İlgili Makaleler

Ubuntu Postgresql ve pgx_ulid yükleme.

Ulid nedir? postgresql için kullanacağımız Ulid kütüphanesi https://github.com/pksunkara/pgx_ulid Ubuntu server 22.04 versiyonu ile deniyorum GNU …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir