![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL-запрос [D5]
AlexeyMir © (2008-04-10 13:13:00)Подскажите, пожалуйста, возможно ли следующее
У меня есть таблица 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)?
Не могу придумать.
ANB (2008-04-11 18:21:00) [1]
> kaif © (10.04.08 19:44) [4]
> А почему бы в таблицу не добавить корневую запись?
>
> ID ParentId Name Sheet
> 0 0 Корень 0
> <Цитата>
И это самое лучшее решение.
kaif (2008-04-10 19:44:00) [2]А почему бы в таблицу не добавить корневую запись?
ID ParentId Name Sheet
0 0 Корень 0
Сергей М. (2008-04-10 16:55:00) [3]
> Как можно в выборку добавить свою строчку где ID=0 Name='Корень'
> ?
А она откуда возьмется ? В таблице-то нет записи с такими атрибутами ..
Можно, конечно, ХП для этой цели прикрутить, но, imho, здесь требуется серьезный пересмотр древесной структуры и логики.
Sergey13 (2008-04-10 13:41:00) [4]> [0] AlexeyMir (10.04.08 13:13)
Я бы подумал в сторону логической оптимизации структуры. ИМХО надо сделать так, что бы невозможно было внести машину в корень дерева. Например ввести псевдо группу "Разное". Это упростит, ИМХО, работу с таблицей.
Наличие поля Sheet вообще вызывает у меня сомнение, т.к. подгрупп я в примере не увидел. Если (по моим догадкам) уровней будет строго 2, то может быть стОит перейти на простую двухтабличную М-Д связь?
Ega23 (2008-04-10 13:26:00) [5]
select ID,Name from SPR_CAR where (Sheet=0) or (ParentId =0)