![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 эту сумму искать...