gpt4 book ai didi

php - 如何查询所有根行的所有子层次结构的所有明细行?

转载 作者:行者123 更新时间:2023-11-29 00:43:13 24 4
gpt4 key购买 nike

有两个:一个是master,一个是detail(外键)。在 master 表中有一个 hierarchy 结构:每个 master 行都有它的 parent 层次结构(自外键).也许表格的 DML 可以解释清楚:

CREATE TABLE classe_menu (                          
class_menu_code int(10) NOT NULL auto_increment,
class_menu_lib varchar(50) default NULL,
class_menu_comment text,
class_menu_deleted tinyint(1) default '0',
class_menu_ordre int(11) default NULL,
class_menu_parent int(10) default NULL,
PRIMARY KEY (class_menu_code) ,
KEY association_108_fk (class_menu_parent),
CONSTRAINT fk_association_108 FOREIGN KEY (class_menu_parent) REFERENCES classe_menu (class_menu_code)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

CREATE TABLE menu (
menu_code int(10) NOT NULL auto_increment,
class_menu_code int(10) default NULL,
menu_lib varchar(100) default NULL,
menu_url varchar(255) default NULL,
menu_titre varchar(100) default NULL,
menu_parent decimal(10,0) default NULL,
menu_visible tinyint(1) default NULL,
menu_ordre decimal(2,0) default NULL,
menu_action varchar(50) default NULL,
menu_icone_img varchar(255) default NULL,
menu_icone_flag tinyint(1) default '0',
menu_icone_title varchar(50) default NULL,
menu_deleted tinyint(1) default '0',
menu_tooltip varchar(25) default NULL,
menu_trace text,
menu_image varchar(255) default NULL,
menu_contextuel tinyint(1) default '0',
menu_logo varchar(255) default NULL,
menu_display int(1) default '0',
PRIMARY KEY (menu_code),
KEY association_109_fk (class_menu_code),
CONSTRAINT fk_association_109 FOREIGN KEY (class_menu_code) REFERENCES classe_menu (class_menu_code)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='liste des menus du site'

如您所见,“classe_menu”是master 表,“menu”是detail 表;但在主表 'classe_menu' 中还有一个 hierarchy 结构,由 'class_menu_parent' 列实现:'classe_menu' 行是 hierarchy 的 root 如果它的 'class_menu_parent' 是 NULL

现在我想要的是获取所有 'classe_menu' root 行和所有 'classe_menu' 的 'menu' 行,即所有根 'classe_menu' 及其所有 children

怎么做?

最佳答案

function getMenuChildren($code,$code_is_class_menu=false){
$children = array();
$sql = 'SELECT * FROM menu WHERE '.($code_is_class_menu?'class_menu_code':'menu_parent').' = '.$code;
$res = mysql_query($sql);
while ($row = mysql_fetch_assoc($res)){
$row['children'] = getMenuChildren($row['menu_code']);
$children[] = $row;
}
return $children;
}

$class_menus = array();
$sql = 'SELECT * FROM classe_menu WHERE class_menu_parent IS NULL';
$res = mysql_query($sql);
while ($row = mysql_fetch_assoc($res)){
$row['children'] = getMenuChildren($row['class_menu_code'],true);
$class_menus[] = $row;
}

print_r($class_menus);

关于php - 如何查询所有根行的所有子层次结构的所有明细行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11338946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com