মাইএসকিউএলে একটি গাছ ছাড়া সাব-ট্রি UB
আমার জুমলা ইন Database COMPANY
, আমি একটি আছে Table: Employee
অন্যান্য কর্মচারীর মনিব রিকার্সিভ সমিতি সঙ্গে, একজন কর্মী হতে পারে। A self relationship of kind (SuperVisor (1)- SuperVisee (∞) )
।
সারণী তৈরি করতে প্রশ্ন:
CREATE TABLE IF NOT EXISTS `Employee` (
`SSN` varchar(64) NOT NULL,
`Name` varchar(64) DEFAULT NULL,
`Designation` varchar(128) NOT NULL,
`MSSN` varchar(64) NOT NULL,
PRIMARY KEY (`SSN`),
CONSTRAINT `FK_Manager_Employee`
FOREIGN KEY (`MSSN`) REFERENCES Employee(SSN)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
আমি টিপলস (কোয়েরি) এর একটি সেট inোকালাম:
INSERT INTO Employee VALUES
("1", "A", "OWNER", "1"),
("2", "B", "BOSS", "1"), # Employees under OWNER
("3", "F", "BOSS", "1"),
("4", "C", "BOSS", "2"), # Employees under B
("5", "H", "BOSS", "2"),
("6", "L", "WORKER", "2"),
("7", "I", "BOSS", "2"),
# Remaining Leaf nodes
("8", "K", "WORKER", "3"), # Employee under F
("9", "J", "WORKER", "7"), # Employee under I
("10","G", "WORKER", "5"), # Employee under H
("11","D", "WORKER", "4"), # Employee under C
("12","E", "WORKER", "4")
Rোকানো সারিগুলিতে নিম্নলিখিত গাছ-হায়ারার্কিকাল-সম্পর্ক রয়েছে :
A <---ROOT-OWNER
/|\
/ A \
B F
//| \ \
// | \ K
/ | | \
I L H C
/ | / \
J G D E
সম্পর্ক খোঁজার জন্য আমি একটি ক্যোয়ারী লিখেছি:
SELECT SUPERVISOR.name AS SuperVisor,
GROUP_CONCAT(SUPERVISEE.name ORDER BY SUPERVISEE.name ) AS SuperVisee,
COUNT(*)
FROM Employee AS SUPERVISOR
INNER JOIN Employee SUPERVISEE ON SUPERVISOR.SSN = SUPERVISEE.MSSN
GROUP BY SuperVisor;
এবং আউটপুট হল:
+------------+------------+----------+
| SuperVisor | SuperVisee | COUNT(*) |
+------------+------------+----------+
| A | A,B,F | 3 |
| B | C,H,I,L | 4 |
| C | D,E | 2 |
| F | K | 1 |
| H | G | 1 |
| I | J | 1 |
+------------+------------+----------+
6 rows in set (0.00 sec)
[ প্রশ্ন ]
সম্পূর্ণ শ্রেণিবদ্ধ গাছের পরিবর্তে, আমার SUB-TREE
একটি বিন্দু (সিলেক্টিক) থেকে একটি প্রয়োজন যেমন:
ইনপুট আর্গুমেন্ট যদি হয় B
তবে আউটপুট নীচের মতো হওয়া উচিত ...
+------------+------------+----------+
| SuperVisor | SuperVisee | COUNT(*) |
+------------+------------+----------+
| B | C,H,I,L | 4 |
| C | D,E | 2 |
| H | G | 1 |
| I | J | 1 |
+------------+------------+----------+
এই আমাকে সাহায্য করুন। যদি জিজ্ঞাসা না হয় তবে একটি সঞ্চিত পদ্ধতি কার্যকর হতে পারে।
আমি চেষ্টা করেছিলাম, কিন্তু সমস্ত প্রচেষ্টা অকেজো ছিল!
It my experience
আমি সর্বদা বিশেষজ্ঞ পক্ষের কাছ থেকে আরও ভাল উত্তর পেয়েছি । এবং আমি মনে করি যে ডেটাবেস প্রশাসকদের কাছে প্রশ্ন সরিয়ে নেওয়া ভাল সিদ্ধান্ত ছিল। সব ক্ষেত্রেই, আমি স্ট্যাকওভারফ্লো এবং এখানে সক্রিয় লোকদের জন্য অত্যন্ত কৃতজ্ঞ। আমি সত্যিই অনেক সমস্যার সমাধান পেয়েছি যা নিজেকে বা অন্য কোনও ওয়েব খুঁজে পাওয়া খুব শক্ত ছিল।