Question

    Given the following tables: Orders (OrderID,

    CustomerID, OrderDate) and Customers (CustomerID, CustomerName, City), what SQL query will return the names of customers who have placed orders in 'New York' within the last 30 days?
    A SELECT CustomerName FROM Customers WHERE City = 'New York' AND OrderDate >= CURDATE() - INTERVAL 30 DAY Correct Answer Incorrect Answer
    B SELECT CustomerName FROM Customers JOIN Orders ON Customers.CustomerID = Orders.CustomerID WHERE City = 'New York' AND OrderDate >= CURDATE() - INTERVAL 30 DAY Correct Answer Incorrect Answer
    C SELECT CustomerName FROM Orders WHERE City = 'New York' AND OrderDate >= CURDATE() - INTERVAL 30 DAY Correct Answer Incorrect Answer
    D SELECT CustomerName, City FROM Customers WHERE City = 'New York' AND OrderDate >= CURDATE() - INTERVAL 30 DAY Correct Answer Incorrect Answer
    E SELECT CustomerName FROM Customers JOIN Orders ON Customers.CustomerID = Orders.CustomerID WHERE OrderDate >= CURDATE() - INTERVAL 30 DAY AND City = 'New York' Correct Answer Incorrect Answer

    Solution

    The correct query utilizes a JOIN between the Customers and Orders tables on the CustomerID field. This allows you to filter customers who are located in 'New York' and have placed an order in the last 30 days. The JOIN ensures that only customers who have an associated order are included, and the date condition (OrderDate >= CURDATE() - INTERVAL 30 DAY) filters for recent orders. Why Other Options Are Wrong : A) Incorrect : The query attempts to filter customers directly, but it fails to include the necessary JOIN with the Orders table, which is crucial for retrieving orders placed by customers in 'New York'. C) Incorrect : This query incorrectly selects from the Orders table and does not filter by customer details. The City column does not exist in the Orders table. D) Incorrect : This query incorrectly attempts to select data from the Customers table without joining it with the Orders table, so there will be no filtering by order date. E) Incorrect : Although the JOIN is correctly applied, this query places the conditions in the wrong order, and the query logic would still be correct but unnecessarily complex.

    Practice Next