Правильное умножение SQL для разных таблиц

0

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

Имейте в виду, что я новичок в этом. Я пытаюсь заставить код сделать промежуточный итог равным сумме столбца qty, умноженной на сумму столбца 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;
  • 0
    Я думаю, вы спрашиваете, как написать SQL-запрос, чтобы использовать эти таблицы для создания промежуточного итога. Можете ли вы отредактировать свой вопрос, чтобы показать, как вы ожидаете, что результат запроса будет выглядеть? Кстати, эта subtotal= sum('qty'*'donutPrice') FROM (invoice_line_item, donut), строка subtotal= sum('qty'*'donutPrice') FROM (invoice_line_item, donut), не должна быть в определении таблицы. Похоже, что он должен быть частью запроса.
  • 0
    Я понятия не имею, что я здесь делаю. Я просто хочу, чтобы значение промежуточного итога было десятичным значением, которое состоит из умноженных сумм табличных значений. Должен ли я сделать это через представление или запрос?
Показать ещё 1 комментарий
Теги:
sqlfiddle

1 ответ

1

Я думаю, вы хотите, чтобы результат выглядел так:

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_line_item и пончик (и другие ваши таблицы). Отношения между ними появляются в предложениях ON операций JOIN.

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

  • 0
    Это почти то, что я хочу. Я просто пытался сделать это как часть свойств поля. Я думаю, вы не можете сделать это ...
  • 0
    Правильно. Вы не можете сделать это (ТМ). Некоторые разновидности MySQL имеют вычисляемые столбцы в таблицах, но они не могут ссылаться на другие таблицы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню