0

テーブルを検索して部品あたりの価格を取得し、注文した部品の数を掛けて価格を計算するために使用するテーブルがあります。

ただし、注文されたこの数の部品は同じテーブルにあり、値を追加するときにテーブルの同じ行の値にアクセスする方法が見つからないようです。

これは不可能ですか、またはこれを行うためのより良い方法はありますか?

これが関係する表は次のとおりです。

CREATE TABLE PartOrder 
(
    OrderID     INTEGER NOT NULL,
    CustomerID  INTEGER NOT NULL,
    PartID          INTEGER NOT NULL, 
    NumParts    INTEGER NOT NULL,
    Status      CHAR(1) NOT NULL 
                CHECK (Status IN ('R', 'H',
                'E', 'C')
    OrderTime TIMESTAMP NOT NULL,
    TotalCost   DECIMAL,
    CONSTRAINT partOrder_pk PRIMARY KEY (OrderID),
    CONSTRAINT partOrder_fk1 FOREIGN KEY (CustomerID) REFERENCES Customer ON DELETE CASCADE,
    CONSTRAINT partOrder_fk2 FOREIGN KEY (FlightID) REFERENCES Part ON DELETE CASCADE
);

numParts 値を取得し、部品表で参照されている部品あたりの価格を掛けるようにします。ただし、注文数が後で変更される可能性があるため、厳密な値に固執することはできません。つまり、totalPrice が変更されます。

現時点では、挿入ステートメントは次のとおりです。

INSERT INTO PartOrder VALUES (001, 001, 001, 4, 'R', NOW(), (4*(SELECT PricePerPart FROM Part WHERE PartID = 001)));
4

1 に答える 1

3

SELECTINTOも ご覧になることをお勧めしますhttp://www.postgresql.org/docs/8.1/static/sql-selectinto.html

またはあなたは一緒に行くことができます

INSERT INTO PartOrder
    SELECT (1,1,1,4,'R',NOW, (4*Part.PricePerPart)) 
    FROM Part 
    WHERE Part.PartId = 1;
于 2013-03-15T08:32:00.900 に答える