【发布时间】:2017-04-19 17:29:06
【问题描述】:
第一次发帖!
因此,作为 SQL 和数据库领域的年轻学徒,我正在努力为企业创建一个数据库来管理订单/商品/价格等。我想从 3 个链接表 {items,prices,discounts }(见底部表格)计算并显示商品的总价。作为一项规则,折扣列不应为零(因为我们只希望在表 discounts 中具有实际折扣的条目,而不是 0)
我想从以下条目中显示所有,但我的视图仅显示有折扣的条目。
insert into items (`item_id`,`item_name`, `item_quantity`) values
(102,'item1',20),
(103,'item2',20),
(404,'item3',20); # <-- It won't be shown if I do SELECT * FROM view;
insert into discounts (`item_id`,`discount`) values
(102,50),
(103,25);
insert into prices (`item_id`,`price`) values
(102,100),
(103,100),
(404,100);
这是我的观点:
CREATE VIEW ItemsPrice AS
SELECT
i.item_id,
i.item_name,
SUM((1-d.discount/100)*p.price*i.item_quantity)
FROM
items AS i
INNER JOIN
prices AS p ON i.item_id=p.item_id
INNER JOIN
discounts AS d ON (p.item_id=d.item_id)
GROUP BY item_id
ORDER BY total;
这是我的表格(以防我弄错了):
DROP TABLE IF EXISTS `items`;
CREATE TABLE `items` (
`item_id` int(30) NOT NULL,
`item_name` varchar(35) NOT NULL,
`item_quantity` double(25,0) ,
PRIMARY KEY (`item_id`)
);
#2=======
DROP TABLE IF EXISTS `prices`;
CREATE TABLE `prices` (
`item_id`int(30) NOT NULL,
`price` decimal(30,2) NOT NULL,
PRIMARY KEY (`item_id`),
CONSTRAINT `prices_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `items` (`item_id`)
);
#3=======
DROP TABLE IF EXISTS `discounts`;
CREATE TABLE `discounts` (
`item_id` int(30) NOT NULL,
`discount` int(3) NOT NULL,
PRIMARY KEY (`item_id`),
CONSTRAINT `discount_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `items` (`item_id`)
);
很抱歉没有提供架构。不知道怎么做。
希望我没有浪费您太多时间!你是我的英雄。
【问题讨论】:
-
措辞优美的问题,清晰明了,包含所有必要的支持细节。您将在 StackOverflow 中走得更远。
标签: mysql sql view sum inner-join