我想从Category表中获取 Half Tree 类别。
CREATE TABLE IF NOT EXISTS `category` (
`cat_id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL,
`cat_name` varchar(255) NOT NULL,
PRIMARY KEY (`cat_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
INSERT INTO `category` (`cat_id`, `parent_id`, `cat_name`) VALUES
(1, 0, 'sadasd'),
(2, 0, 'fsdfsadf'),
(3, 1, 'fasdfasd'),
(4, 1, 'ewrwer'),
(5, 4, 'cxzxczxc'),
(6, 5, 'sadasdqwqwqw'),
(7, 2, 'sadasd');
我希望获得cat_id
为1的类别的层次结构。
不使用加入查询,仅使用1个查询,不使用任何php循环
如果您想更改数据库结构,则可以更改它。
我想要这样的输出:
cat_id 1
- cat_id 3
- cat_id 4
- cat_id 5
- cat_id 6
答案 0 :(得分:1)
经过艰苦的努力,最终得到了这个问题的解决方案。
mySql代码:
CREATE TABLE IF NOT EXISTS `category` (
`cat_id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL,
`cat_name` varchar(255) NOT NULL,
`parentids` varchar(255) NOT NULL,
PRIMARY KEY (`cat_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
INSERT INTO `category` (`cat_id`, `parent_id`, `cat_name`, `parentids`) VALUES
(1, 0, 'sadasd', ''),
(2, 0, 'fsdfsadf', ''),
(3, 1, 'fasdfasd', '|1|'),
(4, 1, 'ewrwer', '|1|'),
(5, 4, 'cxzxczxc', '|1|,|4|'),
(6, 5, 'sadasdqwqwqw', '|1|,|4|,|5|'),
(7, 2, 'sadasd', '|2|');
在sql查询之后创建此表。
select * from category where parentids LIKE "%|1|%";
答案 1 :(得分:0)
在SQL中使用父/子(cat_id,parent_id)是不可能的。 您必须在Framework / Code-Area中使用递归函数执行此操作。
如果要使用SQL执行此操作,可以尝试“嵌套集模型”: