Главная страница
Навигация по странице:

  • Пример 14

  • Пример 15

  • PNAME DNAME VOLUME

  • Таблица 1 Отношение P (Поставщики)

  • Таблица 2 Отношение D (Детали)

  • Введение в системы управления баз данных. !Пушников Введение в системы управления базами данных. В системы управления базами данных 2 Оглавление 2 Глава


    Скачать 2.18 Mb.
    НазваниеВ системы управления базами данных 2 Оглавление 2 Глава
    АнкорВведение в системы управления баз данных
    Дата04.02.2020
    Размер2.18 Mb.
    Формат файлаdoc
    Имя файла!Пушников Введение в системы управления базами данных.doc
    ТипДокументы
    #107076
    страница10 из 26
    1   ...   6   7   8   9   10   11   12   13   ...   26

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


    Пример 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

    Винт

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

    Пример 18. Соединение таблиц по произвольному условию. Рассмотрим таблицы поставщиков и деталей, которыми присвоен некоторый статую (см. пример 8 из предыдущей главы):

    PNUM

    PNAME

    PSTATUS

    1

    Иванов

    4

    2

    Петров

    1

    3

    Сидоров

    2

    Таблица 1 Отношение P (Поставщики)

    DNUM

    DNAME

    DSTATUS

    1

    Болт

    3

    2

    Гайка

    2

    3

    Винт

    1

    Таблица 2 Отношение D (Детали)

    Ответ на вопрос "какие поставщики имеют право поставлять какие детали?" дает следующий запрос:

    SELECT

    P.PNUM,

    P.PNAME,

    P.PSTATUS,

    D.DNUM,

    D.DNAME,

    D.DSTATUS

    FROM P, D

    WHERE P.PSTATUS >= D.DSTATUS;

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

    PNUM

    PNAME

    PSTATUS

    DNUM

    DNAME

    DSTATUS

    1

    Иванов

    4

    1

    Болт

    3

    1

    Иванов

    4

    2

    Гайка

    2

    1

    Иванов

    4

    3

    Винт

    1

    2

    Петров

    1

    3

    Винт

    1

    3

    Сидоров

    2

    2

    Гайка

    2

    3

    Сидоров

    2

    3

    Винт

    1
    1   ...   6   7   8   9   10   11   12   13   ...   26


    написать администратору сайта