|
|
|
| Доброй ночи труженники клавиатуры и мыша,
У меня сложилось следующая ситуация, есть таблица в которой хранится информация в древовидной форме
CREATE TABLE IF NOT EXISTS `bbk` (
`bbkid` int(9) NOT NULL auto_increment,
`bbkidParent` int(9) default NULL,
`bbkName` char(250) default NULL,
PRIMARY KEY (`bbkid`)
);
|
по началу все было замечательно, я делал запрос к таблице и строил дерево
SELECT * FROM bbk ORDER BY bbkidParent, bbkNum asc
|
но теперь простая сортировака по полю `bbkidParent` не дает должного результата, начали появлятся ошибки да и пропадать категории, все из за того что,
bbkid | bbkidParent | bbkName
1 0 Общенаучное и междисциплин...
2 0 Естественные науки
14 0 Сельское хозяйство
24 0 Общественные и гуманитарны...
48 0 Литература универсального ...
3 2 Естественные науки в целом
7 2 Химические науки
8 2 Науки о Земле (геодезически...
6 2 Биологические науки
5 7 Органическая химия
13 12 Книжное дело. Книговедение
22 14 Ветеринария
18 17 Музыка и зрелищные искусст�...
20 0 История. Исторические наук�...
15 20 Экономика. Экономические н�...
16 20 Культура. Культурология
12 20 Средства массовой информац...
|
иногда родитель (`bbkid`) появляется позже, чем дочерняя ветка (`bbkidParent`), может есть какой нибудь способ решить эту проблему используя какой нибудь сложный метод сортировки или запрос?
Очень нужно, дерево приходится использовать часто и везде применяю именно такой метод хранения | |
|
|
|
|
|
|
|
для: DIM@
(01.05.2008 в 01:39)
| | А как вы само дерево строите? Покажите код. | |
|
|
|
|
|
|
|
для: Axxil
(01.05.2008 в 10:17)
| | Вот код построения дерева
<?
$sql = "SELECT * FROM bbk ORDER BY bbkidParent, bbkNum asc";
$result = SQLQueryVS($sql);
if($result && mysql_num_rows($result)>0){
while($row=mysql_fetch_array($result)) {
$id=$row['bbkid'];
$idParent=$row['bbkidParent'];
$Name=$row['bbkName'];
$objTree.= $tree->returnshow();
$objTree.= "</td></tr></table>";
$tree->AddNode($idParent, $id, $Name, true);
}
}
?>
|
есть объект дерево, функция AddNode() добавляет его ветвь, но проблема в том, что дочерняя ветка (`bbkidParent`) появляется раньше, чем родитель (`bbkid`) | |
|
|
|