如果您看到我以前的帖子,则会显示。它因开放而被“关闭”。
我拥有的是汽车销售员和客户的三表系统。这模仿了一个非常简单的汽车销售系统。
在Car Table中有以下字段:
Registation: 使: 模型: 购买日期: 顾客ID: 推销员ID: 出售日期: 购买日期: 价格:
或由销售人员进行的每次销售,他们将根据下表获得佣金:
Car Price(£) % Commission
0-5000 5
5000-10000 6
10000-15000 7
15000+ 8
汽车总是以汽车明细表中指定的价格出售。
我是否在表格中的某处(并自动计算)r作为单独的表格。
如果我要将其存储在Car Table中,我如何让数据库自动计算佣金并将其放入表中,以便在汽车售出时?
由于
答案 0 :(得分:0)
然后你会调用一个select语句(在mysql中测试和工作,其tsql与msaccess非常相似):
SELECT DISTINCT Id_Car, Car.Ds_Car_Description, Car.Nr_Car_Price, Commission.Nr_Commission_Percent * Car.Nr_Car_Price / 100 As Commission_Payable FROM Car LEFT JOIN Commission ON (Car.Nr_Car_Price BETWEEN Commission.Nr_Commission_Min_Value AND Commission.Nr_Commission_Max_Value) WHERE Car.Ic_Car_Sold = 1 ORDER BY Car.Nr_Car_Price DESC
下面是用于创建和填充这些表的sql。
CREATE TABLE IF NOT EXISTS Commission (
Id_Commision int(11) NOT NULL,
Nr_Commission_Min_Value double NOT NULL,
Nr_Commission_Max_Value double NOT NULL,
Nr_Commission_Percent double NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
INSERT INTO Commission (Id_Commision, Nr_Commission_Min_Value, Nr_Commission_Max_Value, Nr_Commission_Percent) VALUES
(0, 0, 5000, 5),
(1, 5001, 10000, 6),
(2, 10001, 15000, 7),
(3, 15001, 1000000000000, 8);
CREATE TABLE IF NOT EXISTS Car (
Id_Car int(11) NOT NULL AUTO_INCREMENT,
Ds_Car_Description varchar(20) COLLATE utf8_bin NOT NULL,
Nr_Car_Price double NOT NULL,
Ic_Car_Sold tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (Id_Car)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=7 ;
INSERT INTO Car (Id_Car, Ds_Car_Description, Nr_Car_Price, Ic_Car_Sold) VALUES
(1, 'Lotus', 20000, 1),
(2, 'Renault 5', 1000, 1),
(3, 'Audi A3', 6000, 1),
(4, 'Fiat Mille', 300, 1),
(5, 'Land Rover', 12000, 0),
(6, 'Lotus', 25000, 1);
在命名字段中,我使用Id作为主索引,Nr表示数字,Ds表示字符串,Ic表示布尔值。我为Banco do Brasil设计了dbs的标准。