Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Деревья и поиск ....

Сообщения:  [1-8] 

 
 автор: SORF   (18.03.2007 в 20:59)   письмо автору
 
   для: Trianon   (18.03.2007 в 00:41)
 

ОГРОМНОЕ СПАСИБО! ВЫ МНЕ ОЧЕНЬ ПОМОГЛИ!!!

   
 
 автор: Trianon   (18.03.2007 в 00:41)   письмо автору
 
   для: SORF   (17.03.2007 в 23:18)
 


SELECT stati.*, trs.* 
FROM trees AS tr 
  JOIN trees AS trs ON tr.c_left <= trs.c_left AND tr.c_right >= trs.c_right 
  JOIN stati ON trs.c_id = statii.c_id 
WHERE  tr.c_id = $id_stati


Касательно связи одной статьи с несколькими разделами - делается по стандартной схеме отношения M:N добавлением промежуточной таблицы фиксирующей факт размещения статьи X в разделе Y . location (id| c_id | st_id)

   
 
 автор: SORF   (17.03.2007 в 23:18)   письмо автору
 
   для: Trianon   (17.03.2007 в 19:33)
 

А если более конкретно по Nested Sets ???

##### таблица описания деревьев "trees":
|tree_id|c_id|c_left|c_right|c_level|c_title|

tree_id - id дерева для хранения в одной таблице нескольких деревьев
c_id - id ветки
c_left - стандартно для Nested Sets
c_right - стандартно для Nested Sets
c_level - стандартно для Nested Sets (глубина)
c_title - название ветки (рус загаловок)

###### таблица описания статей "stati":
|st_id|st_title|st_avtor|st_data|st_text

st_id - уникальный id статьи
c_id - id ветки (КАК СПОСОБ СВЯЗИ СТАТЬИ И ВЕТКИ которой она пренадлежит)
st_title - загаловок статьи
st_avtor - автор
st_data - дата публикации
st_text - текст статьи

ВОПРОС:
КАК ВЫВЕСТИ ВСЕ СТАТЬИ ПРЕНАДЛЕЖАЩИЕ РАЗДЕЛУ "x" И ВСЕМ ЕГО ПОДРАЗДЕЛАМ ПРИ ЭТОМ АВТОР ЭТИХ СТАТЕЙ ДОЛЖЕН БЫТЬ = "у"

P.S./ОЧЕНЬ НЕ ХОЧЕТСЯ ПИХАТЬ СТАТЬИ В ТАБЛИЦУ ОПИСАНИЯ ДЕРЕВЬЕВ...

P.P.S/ Еще вот какая тема!??
Возможна ли в Nested Sets имитация сетьевых связей (отметить для одной дочерней несколько родителей сразу) - к примеру одна статья в 2х разных разделах (в абсолютно разных не одна из которых не является дочерней другой ветках дерева)???

   
 
 автор: SORF   (17.03.2007 в 21:08)   письмо автору
 
   для: Trianon   (17.03.2007 в 19:33)
 

Спасибо непременно последую вашему совету!

а как будет выглядить запрос в случае nested sets
(если статьи и древо в разных таблицах - поиск статей автора "х " в разделе и всех его подразделах "у")

заранее благодарю!

   
 
 автор: Trianon   (17.03.2007 в 19:33)   письмо автору
 
   для: SORF   (16.03.2007 в 23:46)
 

переделайте структуру хранения дерева на nested sets - она хорошо отрабатывает запросы типа "найти всех потомков узла N" - оптимизирована именно на них.

   
 
 автор: SORF   (16.03.2007 в 23:46)   письмо автору
 
   для: Trianon   (16.03.2007 в 10:18)
 

RE: да "в tree_st" st_id первичный ключ

   
 
 автор: Trianon   (16.03.2007 в 10:18)   письмо автору
 
   для: SORF   (16.03.2007 в 00:46)
 

razdel_id|podrazdel_id - это совсем не Nested sets а вовсе таки adjacent list

А в tree_st - st_id - первичный ключ?

   
 
 автор: SORF   (16.03.2007 в 00:46)   письмо автору
 
 

каталог статей.
Статьи разделены на разделы (древо Nested Sets)

stati (таблица статей)
|st_id|st_title |st_avtor|st_text|
|номер|название |автор|текст |

"tree" (таблица описывающая связи разделов)
razdel_id|podrazdel_id

"tree_st" (таблица описывающая принадлежность статей разделам)
|razdel_id|st_id|

"tree_title" (таблица описывающая названия разделов)
razdel_id|название раздела

Как сделать поиск по автору или любому другому полю таблицы stati в конкретном разделе и всех его подразделах ????????????????

...быть может стоит использовать более совершенный вид деревьев к примеру Nested Sets, но даже при использовании Nested Sets я НЕ МОГУ ПОНЯТЬ КАК ТАКОЕ ДЕЛАЮТ!

Неужели единственный возможный вариант .. это:
1) найти все статьи принадлежащие данному разделу и всем его подразделам (список id статей в массив),
2) сделать из этого списка длииинющий select к таблице stati (доп условия если id=1 или 2 или 2 или 5 и так далее со всеми найденными st_id)... но это как-то слишком "тупо!"

ОЧЕНЬ НАДЕЮСЬ НА ВАШУ ПОМОЩЬ ЗАРАНЕЕ БЛАГОДАРЕН!

   

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования