Учебное пособие Санкт-Петербург «бхв-петербург»


SELECT flight_no, departure_city, arrival_city



Pdf көрінісі
бет139/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   135   136   137   138   139   140   141   142   ...   256
sql osnovi yazika

SELECT flight_no, departure_city, arrival_city
FROM routes
WHERE departure_city IN (
SELECT city
FROM airports
WHERE timezone ~ 'Krasnoyarsk'
)
AND arrival_city IN (
SELECT city
FROM airports
WHERE timezone ~ 'Krasnoyarsk'
);
flight_no | departure_city | arrival_city
-----------+----------------+--------------
PG0070
| Абакан
| Томск
PG0071
| Томск
| Абакан
PG0313
| Абакан
| Кызыл
PG0314
| Кызыл
| Абакан
PG0653
| Красноярск
| Барнаул
PG0654
| Барнаул
| Красноярск
(6 строк)
Можно сформировать множество значений для предиката IN с помощью скалярных
подзапросов. Если мы захотим найти самый западный и самый восточный аэропорты
и представить полученные сведения в наглядной форме, то запрос может быть таким:
SELECT airport_name, city, longitude
FROM airports
WHERE longitude IN (
( SELECT max( longitude ) FROM airports ),
( SELECT min( longitude ) FROM airports )
)
ORDER BY longitude;
airport_name |
city
| longitude
--------------+-------------+------------
Храброво
| Калининград | 20.592633
Анадырь
| Анадырь
| 177.741483
(2 строки)
Конечно, в случае, когда необходимо, наоборот, исключить какие-либо значения из
рассмотрения, можно использовать конструкцию NOT IN.
178


6.4. Подзапросы
Иногда возникают ситуации, когда от подзапроса требуется лишь установить сам
факт наличия или отсутствия строк в конкретной таблице, удовлетворяющих опре-
деленному условию, а непосредственные значения атрибутов в этих строках инте-
реса не представляют. В подобных случаях используют предикат EXISTS (или NOT
EXISTS).
В качестве примера выясним, в какие города нет рейсов из Москвы.


Достарыңызбен бөлісу:
1   ...   135   136   137   138   139   140   141   142   ...   256




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет