Запрос из множества таблиц в SQL

В сегодняшней статье мы рассмотрим как выбрать данные из несвязанных таблиц с SQL и оператором JOIN. Для чего это нужно. Прежде всего, скажем, что любой запрос к сайту — это SQL запрос к базе данных, будь то Mysql, Oracle и т.д. Ответ из которой затем возращается в виде данных, оформленных как html страница. Что касается необходимости для подобного SQL запроса, он возникает из-за самой структуры базы данных, оформленной в виде отдельных таблиц. Каждая таблица содержит уникальные данные и только одну колонку с различными id для связи с другими таблицами. И чтобы получать данные из нескольких несвязанных таблиц, необходимо уметь осуществлять выборку данных путем их объединения оператором JOIN.

Мы будем использовать учебную базу по адресу: https://www.w3schools.com/sql/trysql.asp?filename=trysql_asc
. И так мы хотим осуществить выборку всех клиентов купивших продукт Тофу. Прежде всего нам понадобится схема базы данных

Запрос из множества таблиц в SQL

Мы хотим осуществить связанную выборку из таблиц Customers и таблицы Products. Но как видно из схемы данные таблицы никак не связаны напрямую, через какой-либо id. Но зато, между ними есть таблицы со сходными айдишниками.

/* выбираем клиентов и продукцию из таблицы продукты*/
SELECT  Customers.ContactName, products.ProductName FROM [Products]

/*так как клиентов можно выбрать только из таблицы Customers, мы склеиваем таблицы по промежуточным 
таблицам */
Join OrderDetails on products.ProductID = OrderDetails.ProductID

Join Orders on OrderDetails.OrderID = Orders.OrderID

Join Customers on Orders.CustomerID = Customers.CustomerID 

/* выбираем только продукт "Tofu"*/
where ProductName = "Tofu"

В коде сверху, мы последовательно склеили таблицы по общим айдишникам, связав таблицы Customers и Products.
Таким образом, с оператор JOIN языка SQL, возможно осуществлять запрос из таблиц не связанных напрямую, но имеющих промежуточные связи.

Источник