2012-03-21 7 views
-3

私は3つのSQLテーブルを持っています。 2番目に、キーRIDで請求書を保存します。 3番目の表は、この請求書で購入された各製品の数を示すために使用されます。私は2つの問題について助けが必要で、SQLで仕事をすることはめったにない人として、これはやや難しいです。これらの3つのテーブルでどのようにして目的のクエリを取得できますか

1)最近3か月間に最も購入した商品のクエリはどのようになりますか?

2)これら3つの製品の価格を5%引き上げるクエリはどのようになりますか?

DB:あなたが取得したいどのように多くの製品を指定されたので、ここでの全てを取得するためのクエリではありませんでした最初のクエリのために

CREATE TABLE Products(
    pid INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, 
    name VARCHAR(30) NOT NULL, 
    type VARCHAR(8) NOT NULL, 
    price DOUBLE NOT NULL, 
    stock INTEGER NOT NULL); 

CREATE TABLE Invoices(
    rid INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, 
    invoicedate TIMESTAMP NOT NULL); 

CREATE TABLE Orders(
    rid INTEGER, 
    pid INTEGER, 
    quantity INTEGER NOT NULL, 
    FOREIGN KEY (pid) REFERENCES Products(pid) ON DELETE CASCADE, 
    FOREIGN KEY (rid) REFERENCES Invoices(rid) ON DELETE CASCADE); 
+1

どのようなRDBMSを使用していますか? – Lamak

答えて

1
増加価格

update product set price=price*. 05 where pid in(give your pid seperated by comma) 
1

最も多く購入した商品を最も多く購入した商品:

SELECT P.name, P.type, SUM(O.quantity) Quant 
FROM Orders AS O 
INNER JOIN Products AS P 
ON O.pid = P.pid 
GROUP BY P.name, P.type 
ORDER BY Quant DESC 

UPDATE、これはSQL Serverでこれを行う方法です。

UPDATE Products 
SET price = price * 1.05 
WHERE pid IN ( SELECT DISTINCT P.pid 
       FROM Orders AS O 
       INNER JOIN Products AS P 
       ON O.pid = P.pid 
       GROUP BY P.pid 
       ORDER BY SUM(O.Quantity) DESC) 
関連する問題