Как объединить отдельные утверждения вместе - PullRequest
0 голосов
/ 04 июля 2019

У меня есть образец базы данных с 3 различными таблицами, customers, orders, orderdetails.

Назначение - показать имя клиента и адрес из таблицы клиентов, а затем показать общую сумму каждого заказа по идентификатору заказа. Детали заказа имеют идентификатор заказа несколько раз, и это по цене за единицу x, поэтому я должен суммировать их после выполнения расчета.

У клиентов есть поле customerid, которое я могу использовать для соединения с заказами, имеющими такое же поле, таблица заказов имеет orderid, который я могу использовать, чтобы присоединиться к деталям заказа и суммировать общую сумму заказа, но я не знаю, как поставить информация вместе. Таблица клиентов не имеет полей для расчета общего заказа, а имеет только параметр custommerid. Итак, я пытаюсь собрать вместе 3 таблицы, в которых есть некоторые связанные столбцы, но не все присутствуют в каждой таблице.

Я могу сделать 2 отдельных оператора выбора, и каждый из них делает то, что я ожидаю, но я пытался собрать информацию и не смог.

  SELECT c.CustomerID, c.[Address], o.orderid
  FROM Customers c
  Join Orders o
  ON c.CustomerID = o.CustomerID

  --how to join these together?

  SELECT od.orderid, SUM(od.UnitPrice*od.Quantity) as 'Subtotal'
  FROM OrderDetails od
  Join Orders o
  ON od.OrderID = o.OrderID
  Group by od.OrderID

Я пытаюсь показать это со следующей информацией:

Customer Name, Address, OrderID, and Order Total.

Ответы [ 3 ]

1 голос
/ 04 июля 2019

попробуйте это -

 SELECT c.CustomerID, c.[Address], od.orderid, SUM(od.UnitPrice* od.Quantity) as 'Subtotal'
  FROM OrderDetails od
  Join Orders o
  ON od.OrderID = o.OrderID
  join Customers c  ON c.CustomerID = o.CustomerID
  Group by c.CustomerID,  c.[Address], od.OrderID
0 голосов
/ 04 июля 2019

Ответ Мукеша привел меня прямо к финишу, и я смог опустить кастомерида из результата со следующим.Это очень помогло, и я ценю вклад каждого.

  SELECT c.CompanyName, c.[Address], od.orderid, SUM(od.UnitPrice* od.Quantity) as
  'Subtotal'
  FROM OrderDetails od
  Join Orders o
  ON od.OrderID = o.OrderID
  join Customers c  ON c.CustomerID = o.CustomerID
  Group by c.CompanyName,  c.[Address], od.OrderID
0 голосов
/ 04 июля 2019

Вы можете объединить три таблицы, как показано ниже.Я использую производную таблицу OrderDetails для вычисления промежуточных итогов на уровне orderId.

SELECT c.CustomerID, c.[Address], o.orderid, SUM(od.Subtotal) as 'Subtotal'
  FROM Customers c
  Join Orders o
  ON c.CustomerID = o.CustomerID
  join (SELECT orderid, SUM(od.UnitPrice*od.Quantity) as Subtotal from OrderDetails od GROUP BY OrderId) as OrderDetails od
  ON od.OrderID = o.OrderID
group by c.CustomerID, c.[Address], o.orderid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...