Привет ! У меня есть вопрос насчёт дерева NESTED SETS Вот пример дерева: + В моей таблице есть колонка `parent` У меня есть список открытых ветвей .. но он не непрерывный ... тоесть ветвь родитель может быть закрыта. Вот пример : id: (5,3,4,7) - Открытые ветви ... но ветвь родитель 5ой ветви(id = 5) не включена в данный список а значит закрыта(id=2). Мне нужно выбрать конкретные ветви id : (2,3,4) а также их непрерывные ответвления .. тоесть id : (6,7,12,13,14,8,9) но у меня ничего не выходит ... на выходе должны быть id : (2,3,6,7,12,13,14,8,4,9)
у меня в базе хранится дерево сайтов / подсайтов я организовал Tree View на JQuery тоесть можно открывать ветки и смотреть подсайты у сайта ... но если обновить страницу все открытые ветки понятное дело закрываются.. я решил хранить id открытых веток в Cookies .. id: (5,3,4,7) - открытые ветки ... то-есть Id (веток / сайтов) открытых и тем самых занесёных в cookies... теперь я хочу обработать эти id и выбрать их из БД для сохранения Tree View
PHP берёт из кукисов открытые ветки и выводит на экран уже всё в открытов виде.. но это не дело т.к это работает в цикле .. а я хотел это дело оптимизировать .. мне нужно выбрать запросом закрытые и открытые ветки и вывести всё это дело на экрн как и я написал выше .. вот как этосейчас работает .. примерно .. PHP: function print_tree($id = false) { global $wpdb; $ublogs = user_blogs(); //Список ID блогов пользователя $IN = '"' . implode('","', $ublogs) . '"'; if(isset($_COOKIE['table_tree']) && !empty($_COOKIE['table_tree'])) $opened = explode(',',$_COOKIE['table_tree']); else $opened = array(); if(!$id) { $res = $wpdb->get_results('SELECT `left_key`,`right_key`,`blog_id`,`level` FROM `wp_wnm_blogs_tree` WHERE `blog_id` IN ('.$IN.') AND `level` = (SELECT `level` FROM `wp_wnm_blogs_tree` WHERE `blog_id` IN ('.$IN.') ORDER BY `level` LIMIT 1)'); } else { $res = $wpdb->get_results('SELECT `left_key`,`right_key`,`blog_id`,`level` FROM `wp_wnm_blogs_tree` WHERE `parent` = "' . $id . '" ORDER BY `id`'); } foreach($res as $blog) { //Выводим инфо о блоге if(in_array($blog->blog_id,$opened)) print_tree($blog->blog_id); } } Вот так вот примерно всё работает .. но как видите запрос тут в цикле а это не есть гуд .. Как выбрать всё.. вместе с открытыми ветками одним-двумя запросами .. ? Зарание спасибо!