মূল কন্টেন্টে যান
মডিউল 15 · 2-এর পাঠ 2কোর্সে 57/57~15 min
মডিউল পাঠ (2/2)

JSON একত্রীকরণ ফাংশন

JSON এগ্রিগেশন ফাংশন

একীকরণ দ্বিমুখী। ডাটাবেসকে JSON পার্স করার জন্য নিজেকে সীমাবদ্ধ করতে হবে না: এটি এটি তৈরি করতে পারে। কল্পনা করুন যদি আপনার API এবং Node.js কে JSON-এ নেস্টেড অবজেক্টগুলিকে সিরিয়ালাইজ করার নোংরা, নিবিড় কাজ করতে হয় না, কারণ DB সেগুলিকে ডিস্ক থেকে সরাসরি তৈরি করে দিয়েছে।

বিল্ডিং অবজেক্ট এবং অ্যারে

ক্লাসিক ভর একত্রিতকরণ বা স্ট্রিং সংযোজন (String_agg) এর পরিবর্তে, আমরা এই ফাংশনগুলিতে ফিরে যাই:

  • json_build_object(key, value, ...) বা jsonb_build_object(...)
  • json_agg(...) অথবা jsonb_agg(...)
SQL
SELECT json_build_object('name', first_name, 'city', city) AS data
FROM customers;

আপনি { "name": "...", "city": "..." } সম্বলিত মুদ্রিত সারি দেখতে পাবেন, পুরোপুরি সঙ্গতিপূর্ণ।

ব্যায়াম#sql.m15.l2.e1
প্রচেষ্টা: 0লোড হচ্ছে...

'গ্রাহক' টেবিল থেকে, \`json_build_object\` দিয়ে ম্যাপ করা JSON সারি হিসাবে ডেটা ফেরত দিন। দুটি কী ম্যাপ করুন: 'নাম' 'প্রথম_নাম'-এর সাথে আবদ্ধ, এবং 'মেইল' 'ইমেল'-এর সাথে আবদ্ধ। কলামের জন্য \`AS customer_doc\` ব্যবহার করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

json_build_object('name', first_name, 'mail', email)

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#sql.m15.l2.e2
প্রচেষ্টা: 0লোড হচ্ছে...

প্রতিটি অর্ডারের জন্য (\`order_id\`), এটিতে অন্তর্ভুক্ত সমস্ত \`product_id\`গুলিকে একটি একক ইউনিটে তৈরি করুন। 'order_items' টেবিল থেকে, \`GROUP BY order_id\` চালান। তারপর \`order_id\` নির্বাচন করুন এবং একটি JSON অ্যারেতে (JSON_AGG) শুধু \`product_id\` ডেটা জমা করুন। অ্যারে \`পণ্য\` নাম দিন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

ডেটা সংগ্রহ করার জন্য JSON_AGG(product_id) প্লাস একটি ক্লাসিক গ্রুপ।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ