HierarchyId সহ একটি গাছের শাখা লোড / পড়ার কোনও সেট ভিত্তিক উপায় আছে কি?


11

আমি হাইয়ারচি আইডির সাথে ঘুরে বেড়াচ্ছি, এবং নিম্নলিখিতগুলি করার কোনও সেট ভিত্তিক উপায় আমি খুঁজে পাইনি:

  • একবারে সমস্ত সাবট্রি .োকান
  • একবারে সমস্ত সাবট্রি পুনরুদ্ধার করুন

এই প্রশ্নটি আমার আগেরটির সাথে সম্পর্কিত এবং আমি সন্দেহ করি যে হায়ারারচিআইডের সাথে এই দুটি কাজ সম্পাদনের একমাত্র উপায় হ'ল এক সময় নোড বা এক স্তর। যদি আমি বস্তুগত পথ ব্যবহার করি তবে উভয় ক্রিয়া সহজেই একটি একক (এবং তুচ্ছ) সেট ভিত্তিক কমান্ড দ্বারা সম্পন্ন হয়।

আমি কী মিস করছি?

সম্পাদনা: আমি সাবট্রিটি স্থানান্তরিত করার একটি উপায়ও মিস করেছি, তবে আমি মিকেল এরিকসনের মন্তব্য থেকে তা শিখেছি


2
তুমি কি এটা দেখেছ? চলমান সাবট্রিজ
মিকেল এরিকসন

@ মিকায়েল এরিকসন আপনি কি নিজের মন্তব্যে উত্তর দিতে পারবেন?
একে

2
অবশ্যই। কী চলছে তা আমি কীভাবে বুঝি সে সম্পর্কেও আমি কিছুটা বিশদ ব্যাখ্যা করেছি। বিটিডাব্লু, আমি কেবল হাইয়ারচি আইডিতে কিছুটা পরীক্ষা করেছি, এটি কখনও প্রযোজনায় ব্যবহার করি নি।
মিকেল এরিকসন

উত্তর:


5

ব্যবহারের জন্য ফাংশনটি গেটআরপ্রেটেডভ্যালু হয় তবে যখন কেবল GetReparentedValueগাছ ব্যবহার করা হয় তখন "বেমানান" অবস্থায় যেতে পারে।

মাইক্রোসফ্ট সরবরাহ করেছে এমন কিছু কোড যা এটির যত্ন নেয়। সাবট্রিজগুলি সরানো হচ্ছে

আমি যে এই সঙ্গে সম্পর্কযুক্ত অনুমান একটি গাছ প্রতিষ্ঠা । এটি প্যারেন্ট আইডির জন্য একটি গণনাকৃত কলাম ব্যবহার করে যা পিকেতে স্ব স্ব যোগদান করে।


এটি এখন পর্যন্ত সেরা উত্তর। দুর্ভাগ্যক্রমে, আমি এক কমান্ডে একাধিক স্তরের সাবট্রি সন্নিবেশ / নির্বাচন করার কোন উপায় দেখতে পাচ্ছি না।
একে

3

একটি সম্পূর্ণ সাবট্রি পুনরুদ্ধার করা সহজ - এমএসডিএনIsDescendentOf অনুযায়ী পদ্ধতিটি ব্যবহার করুন

DECLARE @Manager hierarchyid
SELECT @Manager = OrgNode FROM HumanResources.EmployeeDemo
  WHERE LoginID = 'adventure-works\dylan0'

SELECT * FROM HumanResources.EmployeeDemo
WHERE OrgNode.IsDescendantOf(@Manager) = 1

সন্নিবেশ করানো আরও জটিল তবে আপনার মূল সমস্যাটি আপনার সীমাবদ্ধতার সাথে থাকবে - আপনি অবশ্যই স্পষ্টত শিশু পিতাকে সন্নিবেশ করতে পারবেন না যতক্ষণ না তাদের পিতামাতার প্রতিশ্রুতিবদ্ধ হয়। এই ক্ষেত্রে হয় পুনরাবৃত্তি এবং শ্রেণিবদ্ধ ক্রমে sertোকান, বা সীমাবদ্ধতা বন্ধ করুন এবং .োকান।

প্রচুর পরিমাণে ডেটা Whenোকানোর সময় - মাইগ্রেশন, ব্যাচ বা বাল্ক সন্নিবেশ ইত্যাদি - আমি সীমাবদ্ধতাটি বন্ধ করে দেব। অপারেশনালি serোকানোর সময় আমি পুনরাবৃত্তি করতাম, যেহেতু সিস্টেমটি চলাকালীন আমি উদাহরণগুলির মুখোমুখি হইনি যেখানে বড় পরিমাণে হায়ারার্কিতে sertedোকানো প্রয়োজন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.