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`

надеюсь, это то, что вы ищете

Другие вопросы по тегам