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

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

SQL [IB6.x]


Senator ©   (2004-09-01 10:53:00) 

Такой вопрос:
есть таблица
ID|Cost|Parent
--------------
1 |10  |null
2 |20  |1
3 |30  |1

мне надо получить результат запроса, такого вида
ID|Cost
--------
1 | 60
2 | 20
3 | 30

Т.е. по ID  надо получить сумму как родную, так и дочерних ID.
Помогите написать запрос....


Senator   (2004-09-01 11:43:00) [1]

to Плохиш:
Огромное спасибо...помогло


Плохиш   (2004-09-01 11:18:00) [2]


> Senator   (01.09.04 11:06) [4]

> но при суммировании кроме первой записи, у которой есть
> потомки получаються null, т.к. число+null=null

Если в IB есть функция, типа COALESCE, то использовать её для замены null на 0


Sergey13   (2004-09-01 11:15:00) [3]

2 [6] Роман Снегирев   (01.09.04 11:09)
И что это решит?

2Senator   (01.09.04 10:53)
Тут наверное только ХП поможет, а если еще и уровней больше 2 то и подавно. Не поддерживает ИБ "деревянные" запросы.


Роман Снегирев   (2004-09-01 11:09:00) [4]

назначь для поля parent какое-нибудь значение по умолчанию, пора бы уж к этому привыккнуть (в смысле не допускать значений null)


Senator   (2004-09-01 11:09:00) [5]

условия вопроса изменить низзя


Senator   (2004-09-01 11:07:00) [6]

to Снегирев:
60=10+20+30
20=20
30=30
говорю, ж нужно получить сумму как свою так и потомков (Parent)


Senator   (2004-09-01 11:06:00) [7]

Мне нужен чистый SQL без привязки к Delphi.
Я понимаю что нужно использовать объединение таблицы с самой собой.
select
t1.id,
t1.cost+sum(t2.cost)
from
tb2 t1
left join tb2 t2 on t2.parent=t1.id
group by
t1.ID,t1.cost

но при суммировании кроме первой записи, у которой есть потомки получаються null, т.к. число+null=null


Роман Снегирев   (2004-09-01 11:03:00) [8]

а че такое 60,20,30 я что то логики здесь не набдюдаю


Ozone   (2004-09-01 10:58:00) [9]

Тупо конечно, но может в OnGetText эту сумму искать...


Ozone   (2004-09-01 10:58:00) [10]

Тупо конечно, но может в OnGetText эту сумму искать...


Наверх

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