SQL-запрос нескольких таблиц с использованием JOIN - Northwind
// Личное понимание, а не задание hw Итак, в примере дб северный ветер от MS есть таблицы: заказы o, [детали заказа] od, клиенты c
- o имеет orderID, customerID (включая дубликаты)
- od имеет идентификатор заказа (включая дубликаты), цену за единицу, количество, скидку
- c имеет идентификатор клиента, companyName
грубо говоря, я хочу присоединиться к
o.customerID = c.customerID; selecting companyName ///
join on o.orderID = od.orderID; selecting unitprice, quantity, discount
моя конечная цель -
sum(q (up - d)) AS 'Order Total' group by od.orderID then
sum(Order Total) group by companyName(?)
Моя главная проблема - не знаю, как / что правильно присоединиться, хотя.
заранее спасибо
2 ответа
Предполагая, что вы создаете правильный оператор Select, как вам требуется, часть соединения должна выглядеть примерно так:
Из заказов o присоединиться к Order_Detail od по o.orderID = od.orderID присоединиться к клиенту c по o.customerID = c.customerID
Типы объединения могут быть: join
, inner join
, right/left join
, От вас зависит, чего вы хотите достичь, т.е. хотите ли вы исключить / включить пустые ссылки. Но структура та же самая.
Проверьте ваш сценарий на SQL Fiddle
SELECT comp.`company_name` AS 'company',COUNT(DISTINCT o.id_sales_order) AS 'total_orders',SUM(`unit_price`) AS 'grand_total'
FROM sales_order AS o
LEFT JOIN sales_order_item AS od ON od.fk_sales_order = o.id_sales_order
LEFT JOIN customer AS c ON c.id_customer = o.fk_customer
LEFT JOIN company AS comp ON comp.id_company = c.fk_company_id
GROUP BY comp.`company_name`
надеюсь, это то, что вы ищете