ВВЕДЕНИЕ В СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ



Отбор данных из нескольких таблиц


Пример 13. Естественное соединение таблиц (способ 1 - явное указание условий соединения):

SELECT P.PNUM, P.PNAME, PD.DNUM, PD.VOLUME FROM P, PD WHERE P.PNUM = PD.PNUM;

В результате получим новую таблицу, в которой строки с данными о поставщиках соединены со строками с данными о поставках деталей:

PNUM

PNAME

DNUM

VOLUME

1 Иванов 1 100
1 Иванов 2 200
1 Иванов 3 300
2 Петров 1 150
2 Петров 2 250
3 Сидоров 1 1000

Замечание. Соединяемые таблицы перечислены в разделе FROM оператора, условие соединения приведено в разделе WHERE. Раздел WHERE, помимо условия соединения таблиц, может также содержать и условия отбора строк.

Пример 14. Естественное соединение таблиц (способ 2 - ключевые слова JOIN… USING…):

SELECT P.PNUM, P.PNAME, PD.DNUM, PD.VOLUME FROM P JOIN PD USING PNUM;

Замечание. Ключевое слово USING позволяет явно указать, по каким из общих колонок таблиц будет производиться соединение.

Пример 15. Естественное соединение таблиц (способ 3 - ключевое слово NATURAL JOIN):

SELECT P.PNUM, P.PNAME, PD.DNUM, PD.VOLUME FROM P NATURAL JOIN PD;

Замечание. В разделе FROM не указано, по каким полям производится соединение. NATURAL JOIN автоматически соединяет по всем одинаковым полям в таблицах.

Пример 16. Естественное соединение трех таблиц:

SELECT P.PNAME, D.DNAME, PD.VOLUME FROM P NATURAL JOIN PD NATURAL JOIN D;

В результате получим следующую таблицу:

PNAME

DNAME

VOLUME

Иванов Болт 100
Иванов Гайка 200
Иванов Винт 300
Петров Болт 150
Петров Гайка 250
Сидоров Болт 1000

Пример 17. Прямое произведение таблиц:

SELECT P.PNUM, P.PNAME, D.DNUM, D.DNAME FROM P, D;

В результате получим следующую таблицу:

PNUM

PNAME

DNUM

DNAME

1 Иванов 1 Болт
1 Иванов 2 Гайка
1 Иванов 3 Винт
2 Петров 1 Болт
2 Петров 2 Гайка
2 Петров 3 Винт
3 Сидоров 1 Болт
3 Сидоров 2 Гайка
3 Сидоров 3 Винт

Замечание. Т.к. не указано условие соединения таблиц, то каждая строка первой таблицы соединится с каждой строкой второй таблицы.




Содержание  Назад  Вперед