Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ризаев (практика).docx
Скачиваний:
2
Добавлен:
20.04.2019
Размер:
67.54 Кб
Скачать

Примеры пространственных запросов

1.Отыскать в таблице Country названия всех стран, которые являются соседями Бельгии.

Select C1.Name As “соседи Бельгии

From Country C1, Country C2

WHERE Touch (C1 shape, C2 shape)=1 AND C2.Name=“Бельгия

Touch – истина, если границы двух поверхностей пересекаются

2. Для вех рек, перечисленных в таблице River, определить страны, по которым они протекают.

Select R.Name, C.Name

From River R, Country C

WHERE Cross(R.Shape, C.Shape) = 1

Cross – истина, если поверхности пересекаются кривой

3. Запрос. Какой город, содержащийся в таблице City, ближе других расположен ко всем рекам, перечисленным в таблице River?

SELECT C1.Name, R1.Name

FROM City C1, River R1

WHERE Distance (C1.Shape, R1.Shape) <

ALL (SELECT Distance(C2.Shape, R1.Shape)

FROM City C2

WHERE C1.Name <> C2.Name

)

4. Река Голубой Дунай может снабжать водой города, удаленные от нее не далее чем на 100 км. Составить список городов, которые могут получать воду из реки Дунай.

Select Ci.name

From City Ci, River R

WHERE Overlap(Ci.Shape, Buffer(R.Shape, 100))=1 AND R.Name =“Дунай

Overlap - истина, если внутренняя область двух геометрий имеют непустое пересечение

5. Составить список названий численности населения и площади стран, содержащихся в таблице Country

Select C.Name, C.Pop, Area (C.Shape) As “Площадь

From Country C

6. Составить список длин рек в пределах каждой страны, по которой они протекают

Select R.Name, C.Name, length(Intersection(R.Shape, C.Shape)) As “Length”

From River R, Country C

WHERE Cross(R.Shape, C.Shape) = 1

Intersect - истина, если геометрии имеют общие элементы

7. Запрос. Для всех стран составить список ВВП и расстояний от столичных городов до экватора.

SELECT Co.GDP, Distance(Point(0,Ci.Shape.y),Ci.Shape)

AS "Расстояние"

FROM Country Co, City Ci

WHERE Co.Name = Ci.Country AND

Ci.Capital = ‘Д’

8. Составить список всех стран, упорядоченных по количеству государств соседей

Select Co.Name, Count(Co1.Name)

From Country Co, Country Co1

WHERE Touch (Co.Shape, Co1.Shape)

GROUP BY Co. Name

ORDER BY Count (Co1.Name)

9. Перечислить страны, имеющие только одного соседа. Страна является соседней по отношению к другой стране, если их территории имеют общую сухопутную границу. В соответствии с этим определением островные государства, скажем Исландия, соседей не имеют.

SELECT Co.Name

FROM Country Co, Country Co1

WHERE Touch(Co.Shape, Co1.Shape))

GROUP BY Co.Name

HAVING Count(Co1.Name) = 1

SELECT Co.Name

FROM Country Co

WHERE Co.Name IN

(SELECT Co.Name

FROM Country Co, Country Co1

WHERE Touch(Co.Shape, Co1.Shape)

GROUP BY Co.Name

HAVING Count(*) = 1)

10. Какая страна имеет наибольшее число соседей?

CREATE View Sosedi AS

Select Co.Name, Count(Co1.Name) AS num_sosedi

From Country Co, Country Co1

WHERE Touch(Co.Shape, Co1.Shape)

GROUP BY Co.Name

Select Co.Name, num_sosedi

From Sosedi

WHERE num_sosedi=( Select MAX(num_sosedi)

From sosedi