ここに最初の投稿!MySQL- SUMが内部の変数が存在しないときに取得する
SQLとデータベースの若いパダワンのように、私は注文/商品/価格などを管理するためのビジネス用のデータベースを作成しています。私は3つのリンクテーブル{アイテム、価格、 discounts}(一番下の表を参照)は、アイテムの合計価格を計算して表示します。 (我々は唯一のテーブルでは、実際の割引ではなく、0とdiscounts
エントリをしたいので)原則として、割引列には、私はそれらのすべてを表示する次のエントリから
ゼロではありませんが、私の見解のみが値引きを示しています。
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`)
);
スキーマを提供していないため申し訳ありません。それを作る方法を知らない。
私はあなたの時間を大いに浪費しませんでした!あなたは私のヒーローです。
素敵な表現の質問:COALESCEと
あなたのクエリ。あなたはStackOverflowで遠くに行くでしょう。 –