Instagram
youtube
Facebook
Twitter

Stored Procedure to Get Customer Order History

Stored Procedure to Get Customer Order History
Orders Table:

products Table:

orderdetails Table:

Query Explanation:

CREATE PROCEDURE GetCustomerOrderHistory(IN inputCustomerID INT)

– This creates a stored procedure called GetCustomerOrderHistory.
– It accepts one input parameter: inputCustomerID, which represents the Customer ID.


SELECT Orders.OrderID, Orders.OrderDate, Products.ProductName, OrderDetails.Quantity

– This SELECT statement retrieves order details for the given customer:

  • The Order ID

  • The Order Date

  • The Product Name

  • The Quantity of each product in the order


FROM Orders

– The query starts from the Orders table, which contains overall order information.


JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID

– This JOIN connects the Orders table with OrderDetails to get product-wise quantity for each order.


JOIN Products ON OrderDetails.ProductID = Products.ProductID

– This JOIN brings in the Products table to get the actual names of the products.


WHERE Orders.CustomerID = inputCustomerID

– This condition filters the results to show only those orders made by the customer whose ID was passed as input.


ORDER BY Orders.OrderDate

– This arranges the output by order date so that older orders come first.


DELIMITER // and DELIMITER ;

DELIMITER // is used to tell MySQL that the procedure ends with // instead of ;.
– After the procedure is created, we reset the delimiter back to normal using DELIMITER ;.


CALL GetCustomerOrderHistory(2);

– This line calls the stored procedure.
– Here, 2 is the customer ID whose order history we want to view.

 

SQL Query:

-- Step 1: Change delimiter so that we can define a procedure
DELIMITER //

-- Step 2: Create the stored procedure
CREATE PROCEDURE GetCustomerOrderHistory(IN inputCustomerID INT)
BEGIN
    SELECT 
        Orders.OrderID,
        Orders.OrderDate,
        Products.ProductName,
        OrderDetails.Quantity
    FROM Orders
    JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID
    JOIN Products ON OrderDetails.ProductID = Products.ProductID
    WHERE Orders.CustomerID = inputCustomerID
    ORDER BY Orders.OrderDate;
END //

-- Step 3: Reset delimiter back to normal
DELIMITER ;

-- Step 4: Call the procedure to see order history of Customer ID = 2
CALL GetCustomerOrderHistory(2);

 

Output: