row_to_json()
পোস্টগ্র্রেএসকিউএল 9.2-এ যুক্ত করা ফাংশনটি ব্যবহার করে আমি জেএসএনে একটি প্রশ্নের ফলাফল ম্যাপ করার চেষ্টা করছি ।
জড়িত সারিগুলিকে নেস্টেড অবজেক্টস হিসাবে উপস্থাপনের সর্বোত্তম উপায় বের করতে আমার সমস্যা হচ্ছে (1: 1 সম্পর্ক)
এখানে আমি চেষ্টা করেছি (সেটআপ কোড: সারণী, স্যাম্পল ডেটা, ক্যোয়ারির পরে):
-- some test tables to start out with:
create table role_duties (
id serial primary key,
name varchar
);
create table user_roles (
id serial primary key,
name varchar,
description varchar,
duty_id int, foreign key (duty_id) references role_duties(id)
);
create table users (
id serial primary key,
name varchar,
email varchar,
user_role_id int, foreign key (user_role_id) references user_roles(id)
);
DO $$
DECLARE duty_id int;
DECLARE role_id int;
begin
insert into role_duties (name) values ('Script Execution') returning id into duty_id;
insert into user_roles (name, description, duty_id) values ('admin', 'Administrative duties in the system', duty_id) returning id into role_id;
insert into users (name, email, user_role_id) values ('Dan', 'someemail@gmail.com', role_id);
END$$;
ক্যোয়ারী নিজেই:
select row_to_json(row)
from (
select u.*, ROW(ur.*::user_roles, ROW(d.*::role_duties)) as user_role
from users u
inner join user_roles ur on ur.id = u.user_role_id
inner join role_duties d on d.id = ur.duty_id
) row;
আমি যদি ব্যবহার করতাম তবে আমি ROW()
ফলাফলগুলি ক্ষেত্রগুলিকে একটি শিশু সামগ্রীতে আলাদা করতে পারতাম, তবে এটি একক স্তরের মধ্যে সীমাবদ্ধ বলে মনে হয়। আমি আরও AS XXX
বিবৃতি সন্নিবেশ করতে পারি না , যেমনটি আমি মনে করি এই ক্ষেত্রে আমার প্রয়োজন হওয়া উচিত।
আমি কলামের নাম বহন করেছি, কারণ আমি যথাযথ রেকর্ড টাইপ করেছি, উদাহরণস্বরূপ ::user_roles
, সেই টেবিলের ফলাফলের ক্ষেত্রে।
এখানে যে প্রশ্নটি ফিরে আসে তা এখানে:
{
"id":1,
"name":"Dan",
"email":"someemail@gmail.com",
"user_role_id":1,
"user_role":{
"f1":{
"id":1,
"name":"admin",
"description":"Administrative duties in the system",
"duty_id":1
},
"f2":{
"f1":{
"id":1,
"name":"Script Execution"
}
}
}
}
আমি যা করতে চাই তা হল যুক্ত হওয়ার জন্য জেএসএন উত্পন্ন করা (আবার 1: 1 ভাল আছে) যেখানে আমি যোগ দিতে পারি এবং তাদের সাথে যুক্ত হওয়া পিতামাতার চাইল্ড অবজেক্ট হিসাবে তাদের প্রতিনিধিত্ব করে, যেমন নীচের মত:
{
"id":1,
"name":"Dan",
"email":"someemail@gmail.com",
"user_role_id":1,
"user_role":{
"id":1,
"name":"admin",
"description":"Administrative duties in the system",
"duty_id":1
"duty":{
"id":1,
"name":"Script Execution"
}
}
}
}
কোন সাহায্য প্রশংসা করা হয়। পড়ার জন্য ধন্যবাদ.