Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.017 c
2-1220193371
dars73
2008-08-31 18:36
2008.10.12
Округление чисел


15-1219290494
Slider007
2008-08-21 07:48
2008.10.12
С днем рождения ! 21 августа 2008 четверг


2-1220854065
Matveih1
2008-09-08 10:07
2008.10.12
Как при загрузке пакета использовать имеющееся подключение к БД?


2-1219920043
biver64
2008-08-28 14:40
2008.10.12
Удаление файла


15-1219221670
начинающий
2008-08-20 12:41
2008.10.12
Лазерник не печатает