Правильное умножение SQL для разных таблиц - PullRequest
0 голосов
/ 13 сентября 2018

Я в конце моей веревки. Я учу SQL для класса. Я пытался заставить что-то сродни работе, но безрезультатно. Может кто-то взглянуть на это.

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

Конечная цель - сделать его немного автоматизированным.

CREATE TABLE donut
(
  donutID int(50) not null auto_increment primary key,
  donutName varchar(50) not null,
  donutDesc varchar(200),
  donutPrice dec(8,2)
);
CREATE TABLE customer
(
  customerID int(50) not null auto_increment primary key,
  fname char(50) not null,
  lname char(50) not null,
  address varchar(50) not null,
  apartment varchar(10),
  city char(50) not null,
  state char(2) not null,
  zip dec(5) not null,
  homeph varchar(10),
  mobileph varchar(10),
  otherph varchar(10)
);
CREATE TABLE invoice
(
  orderID int(50) not null auto_increment primary key,
  notes varchar(50) not null,
  orderdate date not null,
  customerID int(50) not null default 1,
  foreign key (customerID) references customer(customerID)
);
CREATE TABLE invoice_line_item
(
  donutID int(50) not null,
  orderID int(50) not null,
  qty dec not null,
  subtotal dec(10,2),
  subtotal= sum('qty'*'donutPrice') FROM (invoice_line_item, donut),
  primary key (donutID, orderID),
  foreign key(donutID) references donut(donutID),
  foreign key(orderID) references invoice(orderID)
);

ALTER TABLE donut AUTO_INCREMENT=1;
ALTER TABLE customer AUTO_INCREMENT=1001;
ALTER TABLE invoice AUTO_INCREMENT=500;

1 Ответ

0 голосов
/ 13 сентября 2018

Полагаю, вам нужен результат, похожий на этот:

OrderID  subtotal
  1       12.50
  2       15.00
          27.50

Вы получаете это с запросом, подобным этому:

 SELECT invoice.orderID, SUM(invoice_line_item.qty * donut.donutPrice) subtotal
   FROM invoice
   JOIN invoice_line_item ON invoice.orderID = invoice_line_item.orderID
   JOIN donut ON invoice_line_item.donutID = donut.donutID
  GROUP BY invoice.orderID WITH ROLLUP

Охватывали ли вы данные об отношениях сущностей в вашем классе? Ваши объекты - это invoice, invoice_line_item и donut (и другие ваши таблицы). Отношения между ними появляются в предложениях ON операций JOIN.

Начните с запроса и работайте. Затем вы можете создать представление ... которое представляет собой не что иное, как инкапсулированный запрос.

...