В предложении FROM можно указать несколько таблиц. Перечисление таблиц, как правило, используется совместно с условием соединения записей, указанным в предложении WHERE.
Если разные таблицы имеют поля с одинаковыми именами, то для одназначности требуется уточнить имя таблицы.
имя_таблицы.имя_поля
Пример: Вывести номера складов, на которых хранятся HDD.
Для выполнения данного запроса понадобятся данные из таблицы "Товар" (наименование) и таблицы "Заказ" (номер склада).
Эти таблицы связаны по полю "артикул".
SELECT nomer_sklada
FROM tovar, zakaz
WHERE type='hdd' and tovar.articul=zakaz.articul;
FROM имя_таблицы1 INNER JOIN имя_таблицы2 ON имя_таблицы1.первичный_ключ=имя_таблицы2.внешний ключ
Реализуем указанный выше запрос:
SELECT nomer_sklada
FROM tovar INNER JOIN zakaz ON tovar.articul=zakaz.articul
WHERE type='hdd';
Рассмотрим процесс выполнения данного запроса. Исходные таблицы:
Таблица "Товар" | Таблица "Заказ" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
После выполнения предложения FROM (FROM tovar INNER JOIN zakaz ON tovar.articul=zakaz.articul) получим таблицу:
index_zakaza | articul | kol_vo | nomer_sklada | price | type | firm | description |
---|---|---|---|---|---|---|---|
500 | 100 | 30 | 24 | 400 | usb flash drive | kingston | 2Gb |
500 | 105 | 5 | 26 | 3000 | hdd | toshiba | 160Gb |
501 | 100 | 50 | 25 | 400 | usb flash drive | kingston | 2Gb |
501 | 102 | 25 | 24 | 350 | usb flash drive | kingston | 4Gb |
502 | 100 | 10 | 31 | 450 | usb flash drive | kingston | 2Gb |
502 | 103 | 15 | 31 | 4000 | usb flash drive | transcend | 2Gb |
502 | 105 | 24 | 25 | 3550 | hdd | toshiba | 160Gb |
502 | 101 | 10 | 24 | 350 | hdd | transcend | 120Gb |
503 | 103 | 5 | 26 | 4000 | usb flash drive | transcend | 2Gb |
После выполнения предложения WHERE (WHERE type='hdd') получим таблицу:
index_zakaza | articul | kol_vo | nomer_sklada | price | type | firm | description |
---|---|---|---|---|---|---|---|
500 | 105 | 5 | 26 | 3000 | hdd | toshiba | 160Gb |
502 | 105 | 24 | 25 | 3550 | hdd | toshiba | 160Gb |
502 | 101 | 10 | 24 | 350 | hdd | transcend | 120Gb |
После выполнения предложения SELECT (SELECT nomer_sklada) получим таблицу:
nomer_sklada |
---|
26 |
25 |
24 |