Текущий архив: 2008.10.12;
Скачать: CL | DM;
Вниз
SQL-запрос Найти похожие ветки
← →
AlexeyMir (2008-04-10 13:13) [0]Подскажите, пожалуйста, возможно ли следующее
У меня есть таблица SPR_CAR в БД Firebird следующей структуры:
ID ParentId Name Sheet
1 0 Вазы 0
2 0 Москвичи 0
3 1 Ваз2101 1
4 1 Ваз2106 1
5 2 Комби 1
6 0 Скутер 455 1
Таблица в программе отображается в виде дерева, поле ParentID указывает родителя, а если 0-то родитель корень. Но у машины может быть родитель и корень(как у последней позиции).Sheet- признак группа или машина.У меня должна быть такая функция как перемещение машины в другую группу, поэтому в программе вываливается диалог в котором спрашивается в какую группу переместить машину, выполняется SQL:
select ID,Name from SPR_CAR where Sheet=0
который выдает две строки Вазы и Москвичи.
Как можно в выборку добавить свою строчку где ID=0 Name="Корень" ?
Может быть както SQL-запрос можно изменить(может union)?
Не могу придумать.
← →
Ega23 © (2008-04-10 13:26) [1]
select ID,Name from SPR_CAR where (Sheet=0) or (ParentId =0)
← →
Sergey13 © (2008-04-10 13:41) [2]> [0] AlexeyMir (10.04.08 13:13)
Я бы подумал в сторону логической оптимизации структуры. ИМХО надо сделать так, что бы невозможно было внести машину в корень дерева. Например ввести псевдо группу "Разное". Это упростит, ИМХО, работу с таблицей.
Наличие поля Sheet вообще вызывает у меня сомнение, т.к. подгрупп я в примере не увидел. Если (по моим догадкам) уровней будет строго 2, то может быть стОит перейти на простую двухтабличную М-Д связь?
← →
Сергей М. © (2008-04-10 16:55) [3]
> Как можно в выборку добавить свою строчку где ID=0 Name="Корень"
> ?
А она откуда возьмется ? В таблице-то нет записи с такими атрибутами ..
Можно, конечно, ХП для этой цели прикрутить, но, imho, здесь требуется серьезный пересмотр древесной структуры и логики.
← →
kaif © (2008-04-10 19:44) [4]А почему бы в таблицу не добавить корневую запись?
ID ParentId Name Sheet
0 0 Корень 0
← →
ANB (2008-04-11 18:21) [5]
> kaif © (10.04.08 19:44) [4]
> А почему бы в таблицу не добавить корневую запись?
>
> ID ParentId Name Sheet
> 0 0 Корень 0
> <Цитата>
И это самое лучшее решение.
Страницы: 1 вся ветка
Текущий архив: 2008.10.12;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.021 c