0

私の以前の投稿をご覧になった場合は、お詫び申し上げます。オープンエンドであるため、「クローズ」されました。

私が持っているのは、車のセールスマンと顧客用の 3 つのテーブル システムです。これは非常に単純な自動車販売システムを模倣しています。

Car テーブル内には、次のフィールドがあります。

登録: メーカー: モデル: 購入日: 顧客 ID: セールスマン ID: 販売日: 購入日: 価格:

または、営業担当者が販売するたびに、次の表に基づいてコミッションを獲得します。

Car Price(£)        % Commission

0-5000          5
5000-10000          6
10000-15000         7
15000+          8

車は常に車の詳細表で指定された価格で販売されます。

別のテーブルとして、テーブル内のどこかでレートをコミッションしますか (そして、これを自動的に計算します)。

これを Car Table に保存する場合、どのようにしてデータベースにコミッションを自動的に計算させ、それをテーブルに入れ、車が販売されるようにすればよいでしょうか?

ありがとう

4

1 に答える 1

0

プログラム的に言えば、最も簡単な解決策は、Id_Commission、Nr_Commission_Min_Value、Nr_Commission_Max_Value、Nr_Commission_Percent の 4 つのフィールドを持つテーブル COMMISSION を作成することです。

次に、次のような 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 のデータベースの設計で採用した標準です。

于 2013-02-26T15:56:38.800 に答える