Использование в запросе нескольких таблиц

Эквисоедиение

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

Если разные таблицы имеют поля с одинаковыми именами, то для одназначности требуется уточнить имя таблицы.

имя_таблицы.имя_поля

Пример: Вывести номера складов, на которых хранятся HDD.
Для выполнения данного запроса понадобятся данные из таблицы "Товар" (наименование) и таблицы "Заказ" (номер склада). Эти таблицы связаны по полю "артикул".
SELECT nomer_sklada
FROM tovar, zakaz
WHERE type='hdd' and tovar.articul=zakaz.articul;

Явные операции соедиения

В предложении FROM следет указать:

FROM имя_таблицы1 INNER JOIN имя_таблицы2 ON имя_таблицы1.первичный_ключ=имя_таблицы2.внешний ключ

Реализуем указанный выше запрос:
SELECT nomer_sklada
FROM tovar INNER JOIN zakaz ON tovar.articul=zakaz.articul
WHERE type='hdd';

Рассмотрим процесс выполнения данного запроса. Исходные таблицы:

Таблица "Товар"Таблица "Заказ"
articul type firmdescription
100 usb flash drive kingston2Gb
101hddtranscend120Gb
102usb flash drive kingston4Gb
103 usb flash drive transcend2Gb
104hddtranscend160Gb
105hddtoshiba160Gb
106 usb flash drive transcend8Gb
index_zakazaarticulkol_vonomer_skladaprice
500 100 30 24 400
500 105 5 26 3000
501 100 50 25 400
501 102 25 24 350
502 100 10 31 450
502 103 15 31 4000
502 105 24 25 3550
502 101 10 24 350
503 103 5 26 4000

После выполнения предложения FROM (FROM tovar INNER JOIN zakaz ON tovar.articul=zakaz.articul) получим таблицу:

index_zakazaarticulkol_vonomer_skladaprice type firmdescription
500 100 30 24 400 usb flash drive kingston2Gb
500 105 5 26 3000hddtoshiba160Gb
501 100 50 25 400 usb flash drive kingston2Gb
501 102 25 24 350usb flash drive kingston4Gb
502 100 10 31 450 usb flash drive kingston2Gb
502 103 15 31 4000 usb flash drive transcend2Gb
502 105 24 25 3550hddtoshiba160Gb
502 101 10 24 350hddtranscend120Gb
503 103 5 26 4000 usb flash drive transcend2Gb

После выполнения предложения WHERE (WHERE type='hdd') получим таблицу:

index_zakazaarticulkol_vonomer_skladaprice type firmdescription
500 105 5 26 3000hddtoshiba160Gb
502 105 24 25 3550hddtoshiba160Gb
502 101 10 24 350hddtranscend120Gb

После выполнения предложения SELECT (SELECT nomer_sklada) получим таблицу:

nomer_sklada
26
25
24
домой назад далее