Armenian Knowledge Base  

Go Back   Armenian Knowledge Base > Technical sections > Webmaster Zone > Web Development
Register

Reply
 
LinkBack Thread Tools
Old 11.04.2007, 12:07   #1
Web developer
 
Aram Ghazanchyan's Avatar
 
Join Date: 09 2002
Location: Yerevan
Age: 36
Posts: 896
Downloads: 1
Uploads: 0
Reputation: 9 | 0
Default SQL query

Кто поможет написать запрос...

Таблица Folders
ID | Folder | Title
-----------------
1 | 0 | Title 1
2 | 0 | Title 2
3 | 1 | Title 1.1
4 | 1 | Title 1.2
5 | 3 | Title 1.1.1
6 | 4 | Title 1.2.1

Дерево думаю понятно как работает, так вот мне нужен запрос ( рекурсивный ) который бы выводил все под и под - названия Title 1, т.е. должны выводится строки с ID=3,4,5,6

Надеюсь доступно обьяснил.
Reply With Quote
Old 11.04.2007, 12:20   #2
Web developer
 
Aram Ghazanchyan's Avatar
 
Join Date: 09 2002
Location: Yerevan
Age: 36
Posts: 896
Downloads: 1
Uploads: 0
Reputation: 9 | 0
Default

Пожалуйста отвечайте по существу. Мне нужен только и только SQL запрос, никаких других инструментов ( PHP ) у меня нет!
Reply With Quote
Old 11.04.2007, 13:03   #3
мрачный бородач
 
Arth-Gwyr's Avatar
 
Join Date: 09 2005
Location: Антитентура
Age: 38
Posts: 11,134
Downloads: 1
Uploads: 0
Reputation: 387 | 5
Default

я чего-то не совсем понял
select * from Folders where Title like 'Title1.%'
хоски сенц бан?
Reply With Quote
Old 11.04.2007, 23:44   #4
инсценирующи
 
[ Xelgen ]'s Avatar
 
Join Date: 07 2002
Location: Fireplace of Ecotopia
Age: 31
Posts: 4,327
Downloads: 22
Uploads: 0
Reputation: 193 | 4
Default

Arth-Gwyr> не, Title может иметь какое угодно название.

По делу, есть возможность создать MySQL функцию?
Ибо без нее насколько я понимаю рекусрсии или ее "заменителя" не получиться.
Написать подзапросы для 2-ух 3ех уровней можно, но это для конечного и (пожалуй однозначного) числа, некрасиво и не по нашенски.
Reply With Quote
Old 12.04.2007, 00:14   #5
инсценирующи
 
[ Xelgen ]'s Avatar
 
Join Date: 07 2002
Location: Fireplace of Ecotopia
Age: 31
Posts: 4,327
Downloads: 22
Uploads: 0
Reputation: 193 | 4
Default

С гуглом становиться скучно жить.. а мозги заплывают жиром..
Если вдруг еще не нашел:
Вот: http://lists.mysql.com/mysql/198073
Конкретнее:
http://dev.mysql.com/tech-resources/...ical-data.html
Reply With Quote
Old 12.04.2007, 00:26   #6
инсценирующи
 
[ Xelgen ]'s Avatar
 
Join Date: 07 2002
Location: Fireplace of Ecotopia
Age: 31
Posts: 4,327
Downloads: 22
Uploads: 0
Reputation: 193 | 4
Default

Пасторен без небольших извратов, и модификации струтруы данных, с некоторой избыточной инфой не обойтись.
Reply With Quote
Old 12.04.2007, 05:55   #7
Web developer
 
Aram Ghazanchyan's Avatar
 
Join Date: 09 2002
Location: Yerevan
Age: 36
Posts: 896
Downloads: 1
Uploads: 0
Reputation: 9 | 0
Default

Xelgen, спасибо большое за ответ, то что я копал оказалось непригодным, структуру таблицы менять не могу.

Что же касается конкретной задачи: в дальнейшем нужно все подкатегории отсортировать не по глубине, а по дате ввода и еще надо будет организовать постраничный вывод. В таблице порядка 3000 записей начально, потом может доходить до 10-ок тысяч.

* AvDav, без обид, ок? Просто я всегда оформляю вопрос максимально корректно, чтоб потом бы не шел флейм на 2-3 страницы, Еслиб я бы тебя не прервал, было бы огромное кол-во людей писавших "inchi PHP, .NET ogtagorci" и все в этом духе
Reply With Quote
Old 13.04.2007, 01:02   #8
инсценирующи
 
[ Xelgen ]'s Avatar
 
Join Date: 07 2002
Location: Fireplace of Ecotopia
Age: 31
Posts: 4,327
Downloads: 22
Uploads: 0
Reputation: 193 | 4
Default

Quote:
Originally Posted by Aram Ghazanchyan View Post
Xelgen, спасибо большое за ответ, то что я копал оказалось непригодным, структуру таблицы менять не могу.
Не совсем понял, если честно, что ты имел ввиду. Nested Set не возможно применить?
Не знаю как чистым SQL, но скриптом можно запросто привести данную тобой структуру, в nested set. Можно не трогать оригинальную таблицу, если так ограничен в свободе, но содержать паралельно оригинальной таблице нестед сет.
Ну или иной вариант, можно работать и этой таблицей (описанно в первой части), но нужно будет как то вычилить макс глубину, и сделать соотвествубщее ей количество JOIN'ов..
Весь вопрос как я понимаю, в том как ее вчсилсить, используя только SQL.

Quote:
Originally Posted by Aram Ghazanchyan View Post
Что же касается конкретной задачи: в дальнейшем нужно все подкатегории отсортировать не по глубине, а по дате ввода и еще надо будет организовать постраничный вывод. В таблице порядка 3000 записей начально, потом может доходить до 10-ок тысяч.
Гм, тут проблем вроде нет? SORT BY `ID` и LIMIT.

А так, пожалуйста, самому было интересно, да и скоро может на практике пригодиться.
Reply With Quote
Old 13.04.2007, 05:25   #9
Web developer
 
Aram Ghazanchyan's Avatar
 
Join Date: 09 2002
Location: Yerevan
Age: 36
Posts: 896
Downloads: 1
Uploads: 0
Reputation: 9 | 0
Default

Quote:
Гм, тут проблем вроде нет? SORT BY `ID` и LIMIT.
О функции SORT BY я знаю, просто представь если ты используешь скрипт и каждый раз генерируешь запрос к "родителю", то сортировка будет конкретно в данном Folder-е, т.е. нужно будет использовать массивы, а при данном кол-ве данных Массив + Пару 1000 SELECT-ов машина не выдержит...
Reply With Quote
Old 16.04.2007, 13:19   #10
*****
 
Michael's Avatar
 
Join Date: 03 2003
Location: Yerevan
Posts: 314
Downloads: 0
Uploads: 0
Reputation: 9 | 0
Default

Es depqum karog es ogtagortcel

Nested Query vori hamar stipvac klines popoxel bazaji strukturan (bajc kkaroganas @ndamen@ mi zaprosov stanas cankacacac makardak u cankacac xorutjun),

Isk aveli hesht popoxutjun piti anes, bajc qich avelacnes Level dasht@ vorteg kkaroxanas pahel tvjal makardak@ vor@ kqchacni zaprosneri qanak@

Isk es dzevov voch mi ban el ches karox anel. Izur mi charcharvi.
__________________
Men's eyes were made to look, and let them gaze.
Reply With Quote
Sponsored Links
Reply

Thread Tools


На правах рекламы:
реклама

All times are GMT. The time now is 21:14.


Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.