You are on page 1of 4

Giải thích code database

Câu 1: Truy vấn lấy tất cả các cột từ bảng "Product" (tất cả thông tin về sản phẩm)
nơi trường "Status" có giá trị 'Discontinued' (sản phẩm đã ngừng kinh doanh).
Câu 2: Truy vấn lấy tên, họ, số điện thoại và địa chỉ từ bảng "Customer" (được đặt
tên tắt là c) có khóa ngoại "CustomerID" trùng khớp với bảng "Order" (được đặt
tên tắt là o). Kết quả chỉ chứa thông tin của những khách hàng đã đặt hàng.
Câu 3: Truy vấn lấy tất cả cột từ bảng "Order Detail" nơi trường "Order Status" có
giá trị 'Done' (đơn hàng đã hoàn thành).
Câu 4: Truy vấn lấy tất cả thông tin của các sản phẩm từ bảng "Product" nơi trường
"Stock Quantity" có giá trị ít hơn 50.
Câu 5: Truy vấn lấy tất cả thông tin từ bảng "Customer" và sắp xếp kết quả theo
trường "Customer Rating" giảm dần (DESC).
Câu 6: SELECT Supplier."Supplier Name",
COUNT(Product.ProductID) AS "Number of Products"
FROM Supplier
LEFT JOIN Product ON Supplier.SupplierID = Product.SupplierID
GROUP BY Supplier.SupplierID, Supplier."Supplier Name";
SELECT clause (Mệnh đề SELECT): Chọn cột "Supplier Name" từ bảng "Supplier" và sử dụng
hàm đếm (COUNT) để đếm số lượng sản phẩm từ bảng "Product". Kết quả được đặt tên là
"Number of Products".
FROM Supplier: Sử dụng bảng "Supplier".
LEFT JOIN clause (Mệnh đề LEFT JOIN): Liên kết dữ liệu từ bảng "Supplier" với bảng
"Product" bằng cách sử dụng cột "SupplierID". LEFT JOIN được sử dụng để bao gồm tất cả các
hàng từ bảng "Supplier" kể cả những hàng không có sự tương ứng trong bảng "Product".
GROUP BY clause (Mệnh đề GROUP BY): Nhóm kết quả dựa trên cột "SupplierID" và
"Supplier Name" từ bảng "Supplier".
GROUP BY Supplier.SupplierID, Supplier."Supplier Name": Kết quả sẽ được nhóm theo nhà
cung cấp, mỗi nhóm sẽ có một dòng trong kết quả cuối cùng
Câu 7: Truy vấn này lấy tất cả thông tin của các sản phẩm từ bảng "Product" nơi
ngày hết hạn ("Expiry Date") lớn hơn hoặc bằng ngày 10/12/2023.
Câu 8: Truy vấn này lấy thông tin chi tiết về đơn hàng từ bảng "Order" kèm theo
thông tin về khách hàng từ bảng "Customer". Kết quả được kết hợp bằng trường
"CustomerID"
Câu 9: Truy vấn này tính tổng doanh thu của mỗi sản phẩm từ bảng "Order Detail"
bằng cách nhân giá mỗi đơn vị bằng số lượng và sau đó tổng hợp kết quả theo tên
sản phẩm từ bảng "Product".
Câu 10:
SELECT clause (Mệnh đề SELECT): Chọn các cột cụ thể từ hai bảng - "Product" và "Supplier".
Product.ProductID: ID của sản phẩm.
Product.[Product Name]: Tên sản phẩm.
Product.Price: Giá của sản phẩm.
Supplier.[Supplier Name]: Tên của nhà cung cấp.
FROM clause (Mệnh đề FROM): Xác định bảng sẽ được truy vấn.
FROM Product: Sử dụng bảng "Product".
LEFT JOIN clause (Mệnh đề LEFT JOIN): Liên kết dữ liệu giữa bảng "Product" và "Supplier"
dựa trên cột "SupplierID".
LEFT JOIN Supplier ON Product.SupplierID = Supplier.SupplierID: Điều này đảm bảo rằng mọi
sản phẩm từ bảng "Product" sẽ được hiển thị, bất kể có thông tin nhà cung cấp tương ứng hay
không
Câu 11: SELECT clause (Mệnh đề SELECT): Chọn các cột cụ thể từ hai bảng - "Order Detail"
và "Shipments".
"Order Detail".OrderDetailID: ID của chi tiết đơn đặt hàng.
"Order Detail".OrderID: ID của đơn đặt hàng.
"Order Detail".ProductID: ID của sản phẩm trong đơn đặt hàng.
"Order Detail".Quantity: Số lượng sản phẩm trong đơn đặt hàng.
"Order Detail"."Order Status": Trạng thái của đơn đặt hàng.
"Order Detail"."Unit Price": Giá của mỗi đơn vị sản phẩm.
"Order Detail".Discount: Giảm giá áp dụng cho đơn đặt hàng.
Shipments.ShipmentID: ID của lô hàng vận chuyển.
Shipments.ShipmentStatus: Trạng thái của lô hàng vận chuyển.
FROM clause (Mệnh đề FROM): Xác định bảng sẽ được truy vấn.
FROM "Order Detail": Sử dụng bảng "Order Detail".
INNER JOIN clause (Mệnh đề INNER JOIN): Liên kết dữ liệu giữa bảng "Order Detail" và
"Shipments" dựa trên cột "OrderID".
INNER JOIN Shipments ON "Order Detail".OrderID = Shipments.OrderID: Chỉ bao gồm các
hàng mà có sự kết hợp tương ứng trong cả hai bảng.
Câu 12 :

Câu 13
SUM("Order Detail".Quantity): Đây là hàm tổng giá trị của cột "Quantity".
OVER (PARTITION BY "Order Detail".OrderID): Đây là phần sử dụng PARTITION BY để chia
dữ liệu thành các phần dựa trên giá trị của cột "OrderID". Hàm tổng sẽ được tính toán cho mỗi
phần riêng biệt của dữ liệu tương ứng với mỗi "OrderID".

Câu 14:
Tạo thủ tục lưu trữ:
CREATE PROCEDURE GetInventoryInfor: Đây là câu lệnh tạo thủ tục lưu trữ có tên
GetInventoryInfor.
@OrderIDs NVARCHAR(MAX): Đây là tham số đầu vào của thủ tục, là một chuỗi
NVARCHAR có độ dài tối đa (MAX) và được đặt tên là @OrderIDs.
Trong thân thủ tục:
CREATE TABLE #TempInventory: Tạo một bảng tạm thời (#TempInventory) để lưu trữ thông
tin về sản phẩm và số lượng.
INSERT INTO #TempInventory: Chèn dữ liệu vào bảng tạm thời từ bảng "Order Detail" dựa trên
các ID đơn đặt hàng được truyền qua tham số @OrderIDs.
SELECT * FROM #TempInventory: Trả về dữ liệu từ bảng tạm thời.
Thực thi thủ tục lưu trữ:
EXEC GetInventoryInfo @OrderIDs = 'O115': Thực thi thủ tục lưu trữ GetInventoryInfo với giá
trị 'O115' được chuyển vào tham số @OrderIDs.

You might also like