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

Postgresql gümrük beyanname tescil no regex domain

create domain dmn_tescilno varchar(16) check ( value ~ '^[0-9]{8}((IM)|(EX)|(AN)|(TR)|(DG)|(T0)|(C0)|(B0)|(G0)|(M0)|(R0)|(RL))[0-9]{6}$'); select '22222222AN111111'::dmn_tescilno;  

Bir cevap yazın

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