![]() |
|
Модераторы: LSD |
![]()
|
|
| nitr |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
Здравствуйте!
Вот пример маленькой БД
Кто может помочь, или подскажите в сторону чего смотреть, чтоб получить результат выборки в виде дерева (иерархии), т.е.
Буду очень благодарен за любую помощь. Сам не смог... замучился |
||||
|
|||||
| jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 1 Всего: 20 |
все зависит от сервера БД, в оракле, например, есть поддержка вложеных запросов в SQL, через start with ... connect by prior, там можно это сделать, как в остальных, не знаю, в Firebird такого точно нет
имхо только pl/sql, но тогда это уже не резалтсет -------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
Только хранимой процедурой
В оракле - connect by или неименованный блок плскл. В T-SQL - процедурой Если СУБД не поддерживает процедуры - тогда устроить рекурсию вне СУБД, на уровне приложения. -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
Извиняюсь, СУБД - MySQL.
Я вот и хотел только на уровне БД сделать... чтоб нагрузку на него возложить. В моём случае должно быстрей работать, чем приложение. Хоть и на перл всё можно, но хотел выборку в БД. Спасибо, сейчас буду смотреть дальше... |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Версии ...? А ты вместо навылет непонятной таблицы лучше поясни, как именно определяется кто кому родитель и/или потомок... Где связность? Одно- или двунаправленная, вверх или вниз? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Поле pid - id родительского узла. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
Говорят, с пятой версии майскл поддерживает процедуры. Попробуй на сервер БД перенести эти вычисления -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
А как здесь поможет процедура? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Смотрю как именно заполняется данными таблица и - не верю. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
Akina, я дал пример. Он верен, абсолютно. Просто такой вид может приобрести при удалении какой-то строки... id не обязательно по порядку (в моё примере я сразу сделал такого вида таблицу). Я для упрощения представления дал...
MySQL 4.1 процедуры не поддерживает. Вопрос был в том, что можно ли средствами "мускула" сделать такую выборку. Лучше манипулировать данными "мускулом", т.е. быстрей... Спасибо и на этом ;) З.Ы.: Простой пример таблицы на словах Монитор - id 1 pid 0 TFT - id 2 pid 1 CRT - id 3 pid 1 Samsung 940N - id 4 pid 2 Samsung 920N - id 5 pid 2 LG 775 - id 6 pid 3 LG 795 - id 7 pid 3 "Удалите" к примеру id 4 и внесите в таблицу другие мониторы TFT, потом мониторы CRT. Вот и получится примерно как я дал пример ;) Это сообщение отредактировал(а) nitr - 18.8.2006, 09:56 |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
В сайбэйсе делали так: ТМП Табличка - в ней процедура сохраняет промежуточные данные при проходе дерева Потом делается выборка из таблички(в этой же процедуре). Если не указать into bla-bla - резалтсет выскакивает наверх как из банального селект стейтмента. И наверху абсолютно аналогично обрабатывается. В мускл так может не работать. Но можно из ТМП таблички тянуть запросом, после заполнения процедурой. -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
если я все правильно понял, то это вопрос по группировке. делается группировка по "родителям" и по "дочкам". хотя, вероятно я что-то не понял, ибо уж очень простым представляется решение -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Не люблю я это дело, но как вариант действительно подойдет. Хотя в Oracle вроде можно и курсор сгенерить в динамике. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
попытайтесь продолжить свою мысль и вы поймёте, что это не получится ;) А поповоду тмп-таблички, MySQL 4.1 не знает о хран. процедурах... На перл я могу всё это сделать, но хотел возложить всё на MySQL. Либо есть уж "решение" - при обновлении данных в табличке с помощью перл делать "временную" таблицу, из которой потом просто сделать select * ;) Но ско-ко обсуждал это, все считают данное решение - избыточные данные. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 3 Всего: 360 |
Добавь им порядковые номера и с каждым изменением таблицы пересчитывай их заного.
|
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |