SUB-TREE DALAM WILAYAH dalam MySQL
Di MYSQL saya Database COMPANY
, saya memiliki Table: Employee
asosiasi rekursif, seorang karyawan dapat menjadi bos bagi karyawan lain. A self relationship of kind (SuperVisor (1)- SuperVisee (∞) )
.
Permintaan Membuat Tabel:
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;
Saya telah memasukkan satu set tupel (Kueri):
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")
Baris yang dimasukkan mengikuti Tree-Hierarch-Relationship :
A <---ROOT-OWNER
/|\
/ A \
B F
//| \ \
// | \ K
/ | | \
I L H C
/ | / \
J G D E
Saya menulis kueri untuk menemukan hubungan:
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;
Dan outputnya adalah:
+------------+------------+----------+
| 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)
[ PERTANYAAN ]
Alih-alih menyelesaikan Hierarchical Tree, saya memerlukan SUB-TREE
dari titik (selektif) misalnya:
Jika argumen input B
maka output harus seperti di bawah ini ...
+------------+------------+----------+
| SuperVisor | SuperVisee | COUNT(*) |
+------------+------------+----------+
| B | C,H,I,L | 4 |
| C | D,E | 2 |
| H | G | 1 |
| I | J | 1 |
+------------+------------+----------+
Tolong bantu saya dalam hal ini. Jika bukan permintaan, prosedur tersimpan dapat membantu.
Saya mencoba, tetapi semua upaya tidak berguna!
It my experience
Saya selalu mendapat jawaban yang lebih baik dari sisi ahli . Dan saya pikir itu keputusan yang lebih baik untuk memindahkan pertanyaan ke Administrator Database. Dalam semua kasus, saya sangat berterima kasih kepada stackoverflow dan orang-orang yang aktif di sini. Saya benar-benar mendapat solusi untuk banyak masalah yang sangat sulit untuk menemukan diri saya atau web lain.