正确的sql跨表乘法

ct3nt3jp  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(410)

我已经穷途末路了。我正在为一个班学习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;
bgtovc5b

bgtovc5b1#

我猜你想要这样的结果:

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\u line\u item和donut(以及其他表)。它们之间的关系出现在 ON 合同条款 JOIN 操作。
从一个查询开始,让它工作。然后你可以创建一个视图。。。它只不过是一个封装的查询。

相关问题