Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Помогите разобраться (MySQL запрос)
Категорий не много и их число не увеличится (16)
Подкатегорий не может быть больше 6
16*6=max 96 запросов к БД. Знаю, что так НЕ ДЕЛАЮТ, но вот как?
JustUserR
Отправлено: 15 Апреля, 2010 - 16:29:43
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
ZeiZ пишет:
16*6=max 96 запросов к БД Знаю, что так НЕ ДЕЛАЮТ, но вот как
Все зависит от того что в конечном итоге вы хотите получить - если просто вывести список подкатегорий то делаете один большой запрос с JOIN-ом вроде следующего SELECT a.ID,a.category_id,a_name,b.ID,b.name FROM pogkatogory a RIGHT JOIN caterogy b ON a.caterogy_id=b.ID и получить одну большую таблицу со всеми категориями и подкатегориями
С другой стороны если содержимое подкатегорий будет разрастаться - то вы можете выводить не сразу весь список а делать запросы от клиента через Iframe/AJAX и выводить только нужный раздел
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
ZeiZ
Отправлено: 15 Апреля, 2010 - 20:59:47
Частый гость
Покинул форум
Сообщений всего: 231
Дата рег-ции: Нояб. 2009 Откуда: Москва
Помог: 0 раз(а)
да большую категорию я получаю...
..... cat_name podcat_name .....
монитор ЭЛТ
монитор ЖК
принтер лазерный
принтер матричный =)
принтер промышленный
принтер струйный
................................ ......................
Нужно вывести что-то типа:
1) category1
1.1)podcategory1
1.2)podcategory2
1.3)podcategory3
1.N)podcategoryN
Покинул форум
Сообщений всего: 87
Дата рег-ции: Июль 2008
Помог: 0 раз(а)
RIGHT JOIN подошел-бы в этой ситуации, но для него требуется две таблицы. Все можно сделать намного проще вообще с одной таблицей с помощью функции обратного вызова. Она и используется для создания деревьев. Создай помимо id еще колонку parent_id.
Суть в том, что значение parent_id = 0 означает корневую категорию. Все остальные значения - дочернии категории этой категории. Ну например, твоя категория podcategory2 имеет id 5. Дочерней категорией category2 она будет тогда, когда ее parent_id будет иметь значение 5.
Покинул форум
Сообщений всего: 231
Дата рег-ции: Нояб. 2009 Откуда: Москва
Помог: 0 раз(а)
Acuna
Списибо, немного не то. Как организовать дерево с неограниченной вложенностью в mysql я немного понимаю, но вот у меня уже жёстко заданы 2 таблицы. =((
В одну слить не получится, т.к. к категориям и подкатегориям разные требования. =((
Acuna
Отправлено: 15 Апреля, 2010 - 21:43:45
Гость
Покинул форум
Сообщений всего: 87
Дата рег-ции: Июль 2008
SELECT*FROM categories LEFTJOIN subcategories ON categories.id = subcategories.parent_id
----- The Lisalover
!!! I LOVE PHP !!!
ZeiZ
Отправлено: 15 Апреля, 2010 - 22:01:22
Частый гость
Покинул форум
Сообщений всего: 231
Дата рег-ции: Нояб. 2009 Откуда: Москва
Помог: 0 раз(а)
завтра попробую отпишусь Acuna спасибо.
JustUserR
Отправлено: 16 Апреля, 2010 - 13:12:39
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Acuna пишет:
RIGHT JOIN подошел-бы в этой ситуации, но для него требуется две таблицы. Все можно сделать намного проще вообще с одной таблицей с помощью функции обратного вызова. Она и используется для создания деревьев. Создай помимо id еще колонку parent_id
Как я понял читая первое сообщение автора у нег имеется как раз две таблицы - в одной из них содержатся катерогии с прилегающим о них данными - а в другой подкатегории также с прилегающей инофрмацией и связью с родительской категорией
Далее предложенный SQL-запрос выдается результирующую таблицу - в которой имеются все категории и их подкатегории Запрос происходит по схеме один ко многим - одна категория и много подкатегорий Из полученной таблицы надо попросту выгрузить в общий список (По сути хеш-массив) имена категорий и ссылку на родительский элемент После этого остается лишь сформироватб дерево элементов с помощью этой фукнции http://forum.php.su/topic.php?fo...65891#1271165891
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.