30/09/2018, 20:16

Cần giúp đỡ về SQL Server

Mình làm bài tập SQL Server với database Northwind. Mình có gặp yêu cầu này:

Danh sách các Products do nhà cung cấp (supplier) có mã 1,3,6 đã bán được trong tháng 6,7 của năm 1997, được sắp xếp theo mã nhà cung cấp (SupplierID), cùng mã nhà cung cấp thì sắp xếp theo ProductID.

Cho mình hỏi là với những yêu cầu dài kiểu như vầy thì mình nên xử lý cái nào trước cái nào sau đây.
Dưới đây là diagram của database.

KYN viết 22:16 ngày 30/09/2018

làm từ đầu đến cuối. thu hẹp dần theo yêu cầu.

Sáng Béo viết 22:27 ngày 30/09/2018

Theo mình thì mình sẽ suy luận là: cần tìm OrderID của các Orders có OrderDate trong tháng 6,7 năm 1997. Rồi lấy ra ProductID trong OrderDetails của các OrderID đấy. Lấy ra danh sách Products có mã nhà cung cấp trong tập {1;3;6} và ProductID có giá trị bằng với những ProductID vừa lấy trong OrderDetails, rồi sắp xếp kết quả. Chuyển sang câu lệnh thì sẽ là chiều ngược lại.
Đây là câu lệnh của mình, bạn test thử xem:

SELECT * FROM Products WHERE SupplierID IN (1,3,6) AND ProductID IN (
    SELECT DISTINCT ProductID FROM [Order Details] WHERE OrderID IN (
        SELECT OrderID FROM Orders WHERE MONTH(OrderDate) IN (6,7) AND YEAR(OrderDate) = 1997
    )
)

Có vẻ hơi dài dòng

Bài liên quan
0