Базы данных. Язык SQL. Дьяков И.А. - 52 стр.

UptoLike

Составители: 

from prihod
where kolvo = ( select max
(kolvo) from prihod);
Оператор select возвращает не одно значение, а список. Поэтому может возникнуть ошибка. Чтобы
ее избежать надо заменить оператор = на оператор выбора из нескольких возможных значений (in).
Синтаксис вложенного запроса ничем не отличается от синтаксиса основного запроса. Это значит,
что в подзапрос может быть вложен другой подзапрос и т.д.
Например, составим список получения деталей от поставщика, который в свое время поставил мак-
симальную партию любой детали:
Select p0.*
from prihod p0
where p0.post in
(select p1.post
from prihod p1
where kolvo in
(select max (p2.kolvo)
from prihod p2));
Сначала определим max, далее имя поставщика, а затем все записи, связанные с данным поставщи-
ком.
Таблица prihod имеет дополнительно столбцы поставщика:
Postимя поставщика; Gorodгород поставщика; Addrадрес поставщика.
8.12 Внешние соединения
Определяются в предложении from согласно спецификации:
Select { * | <значение 1> [, <значение 2>… ]}
from <таблица 1> <вид соединения > join < таблица 2>
on <условие поиска>;
Внешнее соединение отличается от внутреннего тем, что в результирующий HД включаются записи
ведущей таблицы соединения, которые объединяются с пустым множеством записей другой таблицы.
Какая из таблиц будет ведущей, определяет вид соединения (leftлевое внешнее соединение, ведущая
таблица 1; rightправое внешнее соединение, ведущая таблица 2; fullполное внешнее соединение).
В случае полного внешнего соединения ведущими являются обе таблицы. В результирующий HД
вкладываются все записи обеих таблиц согласно алгоритму:
1 если для записи таблицы 1 имеются записи таблицы 2, удовлетворяющие условию соединения,
то в результирующий HД включаются все комбинации записей таблиц 1 и 2;
2 иначе в HД включается запись таблиц 1, соединенная с пустой записью таблицы 2;
3 п. 1 и 2 повторяются для таблицы 2 и таблицы 1.
Пример. Пусть имеем таблицы A и B.
A В
P1 P2 P3
P1 P2
a x
400
x
1
b x
200
y
2
c y
500
z
2
d
– –
Тогда выполнение оператора
Select A.P1, A.P2, B.P2
from A left join B
on A.P2 = B.P1;
A.P1 A.P2 A.P2
a x 1
b x 1
c y 2
d – –
A.P1 A.P2 A.P2
a x 1
b x 1
с y 2
– – 2