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" } ] } ] }