Я в конце своей веревки. Я изучаю 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;
Я думаю, вы хотите, чтобы результат выглядел так:
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
.
Начните с запроса и получите его работу. Затем вы можете создать представление... которое не более или менее инкапсулированного запроса.
subtotal= sum('qty'*'donutPrice') FROM (invoice_line_item, donut),
строкаsubtotal= sum('qty'*'donutPrice') FROM (invoice_line_item, donut),
не должна быть в определении таблицы. Похоже, что он должен быть частью запроса.