2012-03-21 3 views
-3

3 개의 SQL 테이블이 있습니다. 먼저 키 PID가있는 제품을 저장합니다. 두 번째로 RID를 사용하여 송장을 저장합니다. 세 번째 표는이 제품에서 얼마나 많은 제품을 구매했는지 설명하는 데 사용됩니다. 두 가지 문제에 대한 도움이 필요하고 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) 
관련 문제