
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
19.02.2014, 13:28:40
|
|||
|---|---|---|---|
|
|||
Вопрос по FAQ: Древовидные структуры средствами MySQL или роман Стендаля "Красное и Черное" |
|||
|
#18+
mahoune Древовидные структуры средствами MySQL Все примеры будем рассматривать на каталоге товаров. Способ 1 - самый простой Самый простой способ организовать хранение дерева это создать таблицу каталога: Поле ОписаниеID Уникальный номерParentID Номер родительского разделаCatName Название раздела Код: sql 1. 2. 3. 4. 5. 6. В этой таблице поле ParentID указывает на родительский раздел, соответственно как-то надо обозначить тот раздел с которого начнется все дерево. Зачастую для этого используют значение 0 (ноль) в поле ParentID. Теперь создаем таблицу товаров с ссылкой на каталог: Поле ОписаниеID Уникальный номерCatID Номер разделаGoodName Название товара Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Заметьте, мы сразу, при создании таблицы товаров, задаем связь между полем CatID таблицы товаров (Goods) и полем ID таблицы разделов (Catalog). Теперь для выбора товаров из одного определенного раздела достаточно выполнить скрипт: Код: sql 1. 2. 3. три вопроса 1. почему в Catalog нет индекса для ParentID не уж то не нужно? 2. чем Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. лучьше чем Код: sql 1. 2. 3. 4. 5. 6. ? 3. А если нужно выбрать категории в которых есть товары как правильно - оптимально сделать у меня пока родилось такое решение: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2014, 13:44:06
|
|||
|---|---|---|---|
Вопрос по FAQ: Древовидные структуры средствами MySQL или роман Стендаля "Красное и Черное" |
|||
|
#18+
pehser, 1) Индексы добавляются по мере возникновения в них необходимости. 2) а) Не "лучьше", а "лучше" б) Это вообще-то разные вещи: в одном случае задана связь, в другом просто проиндексировано поле; вы про внешние ключи вообще в курсе - что это такое и зачем оно нужно? 3) Только сами категории? если в родителе товаров нет, а в потомке есть - родителя (и всех его родителей) надо выводить? если да, то по-простому не получится, если нет, то вы в принципе написали почти то, что надо, хотя за "select * <...> group by OneColumn" на более суровых форумах расстреливают на месте. Хотя тут все поля из одной таблицы и группировка по её первичному ключу, это ещё куда ни шло :) PS. 2miksoft: может, не будем засорять фак, а вынесем в отдельную тему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2014, 14:18:06
|
|||
|---|---|---|---|
|
|||
Вопрос по FAQ: Древовидные структуры средствами MySQL или роман Стендаля "Красное и Черное" |
|||
|
#18+
tanglirpehser, б) вы про внешние ключи вообще в курсе - что это такое и зачем оно нужно? Нет, только начал изучать работу с ключами tanglir3) Только сами категории? если в родителе товаров нет, а в потомке есть - родителя (и всех его родителей) надо выводить? Нет родителей не учитываем tanglirто вы в принципе написали почти то, что надо а ввчем НО - почти заключается tanglirхотя за "select * <...> group by OneColumn" на более суровых форумах расстреливают на месте. Хотя тут все поля из одной таблицы и группировка по её первичному ключу, это ещё куда ни шло :) А в чем проблема в "select * <...> group by OneColumn" почему расстреливают, а как нужно, а то жить хочется :) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2014, 14:59:38
|
|||
|---|---|---|---|
Вопрос по FAQ: Древовидные структуры средствами MySQL или роман Стендаля "Красное и Черное" |
|||
|
#18+
tanglirPS. 2miksoft: может, не будем засорять фак, а вынесем в отдельную тему?Выделил. Благо что теперь функционал есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2014, 15:45:09
|
|||
|---|---|---|---|
|
|||
Вопрос по FAQ: Древовидные структуры средствами MySQL или роман Стендаля "Красное и Черное" |
|||
|
#18+
pehser 1. почему в Catalog нет индекса для ParentID не уж то не нужно?Вообще-то не индекс, а FK - не помешал бы, чтобы не допустить подвисших узлов, а так же случайное удаление узла, имеющего потомков: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2014, 23:30:33
|
|||
|---|---|---|---|
Вопрос по FAQ: Древовидные структуры средствами MySQL или роман Стендаля "Красное и Черное" |
|||
|
#18+
pehserА в чем проблема в "select * <...> group by OneColumn" почему расстреливают, а как нужно, а то жить хочется :) ?Посмотрите эту статью . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1835200]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 323ms |

| 0 / 0 |
