Запрос из множества таблиц в SQL
В сегодняшней статье мы рассмотрим как выбрать данные из несвязанных таблиц с SQL и оператором JOIN. Для чего это нужно. Прежде всего, скажем, что любой запрос к сайту - это SQL запрос к базе данных, будь то Mysql, Oracle и т.д. Ответ из которой затем возращается в виде данных, оформленных как html страница. Что касается необходимости для подобного SQL запроса, он возникает из-за самой структуры базы данных, оформленной в виде отдельных таблиц. Каждая таблица содержит уникальные данные и только одну колонку с различными id для связи с другими таблицами. И чтобы получать данные из нескольких несвязанных таблиц, необходимо уметь осуществлять выборку данных путем их объединения оператором JOIN.
Мы будем использовать учебную базу по адресу: https://www.w3schools.com/sql/trysql.asp?filename=trysql_asc . И так мы хотим осуществить выборку всех клиентов купивших продукт Тофу. Прежде всего нам понадобится схема базы данных
Мы хотим осуществить связанную выборку из таблиц 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, возможно осуществлять запрос из таблиц не связанных напрямую, но имеющих промежуточные связи.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.