Косидер следующей структуры для населения.Суммарные иерархические значения в таблице для континентов, стран и штатов
Asia(100+50+150=300)
> China (20+80=100)
> China_StateA (20)
> China_StateB (80)
> KSA (10+40=50)
> KSA_StateA (10)
> KSA_StateB (40)
> India (70+80=150)
> India_StateA (70)
> India_StateB (80)
Europe(50+15=65)
> England (50)
> England_StateA (20)
> England_StateB (30)
> Ireland (5+10=15)
> Ireland_StateA (5)
> Ireland_StateB (10)
Если я иметь такую же структуру, в одной таблице базы данных, как следующий
Id Type Name ParentId Population
1 Continent Asia 0
2 Country China 1
3 State China_StateA 2 20
4 State China_StateB 2 80
5 Country KSA 1
6 State KSA_StateA 5 10
7 State KSA_StateB 5 40
8 Country India 1
9 State India_StateA 8 70
10 State India_StateB 8 80
11 Continent Europe 0
12 Country England 11
13 State England_StateA 12 20
14 State England_StateB 12 30
15 Country Ireland 11
16 State Ireland_StateA 15 5
17 State Ireland_StateB 15 10
Тогда как я могу написать SQL запрос, который будет возвращать население на каждом уровне. т. е. подведет население штатов, чтобы найти население страны. Аналогичным образом суммирует население стран, чтобы найти население континентов.
Я думаю, вы связать «государство» записи с «Страна» записей по имени. Но, как вы связываете континент со странами? Выбрав поле ID? Я думаю, что самый простой способ добиться того, что вы хотите, - это функция или хранимая процедура и итерация по курсору: https://msdn.microsoft.com/es-es/library/ms180169(v=sql.120).aspx – Rumpelstinsk
Есть ли способ узнать, в какой стране принадлежит какой континент и какое государство принадлежит какой стране? Я имею в виду, что некоторые из нас знают, что Индия находится в Азии, но база данных этого не делает. – Nitish
Обновленный комментарий: Используйте [иерархические запросы] (https://msdn.microsoft.com/en-in/library/bb677191.aspx) – Nitish