1
這是一個類別表,如何獲得與某個類別相關的所有子類別,而不必知道它有多深。
CREATE TABLE `categories` (
`id` int(11) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`parentid` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
這是你如何讓類別和相關的子類別。
SELECT root.name AS root_name
, down1.name AS down1_name
, down2.name AS down2_name
FROM categories AS root
LEFT OUTER
JOIN categories AS down1
ON down1.parentid = root.id
LEFT OUTER
JOIN categories AS down2
ON down2.parentid = down1.id
WHERE root.parentid IS NULL
ORDER
BY root_name
, down1_name
, down2_name
我所注意到的是,這個查詢只能進入2步/節點推進,好比說
category > sub-category 1 > sub-category 2
如果我有一個子類超越2步/ nodes like say
category > sub-category 1 > sub-category 2 > sub-category 3
甚至可能是子類別4我需要添加down3.nam e還是down4.name來結束包含所有子類別還是有更好的方法?
你不能真的在MySQL中。您有兩個選擇:更改層次結構的表示形式或使用遞歸存儲過程。 –
[如何創建MySQL分層遞歸查詢]的可能重複(https://stackoverflow.com/questions/20215744/how-to-create-a-mysql-hierarchical-recursive-query) – krokodilko