Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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)


Наверх

Титульная страница Поиск, карта сайта Написать письмо