Solved

SQL Help - SELECT most recently sold products

Posted on 2008-10-20
4
346 Views
Last Modified: 2012-06-21
Hiya,

I'm hoping that someone can give me a hand with the following SQL problem:

The database contains the following tables:-

Orders
----------
Order_Id
Date_Purchased
...

Products
------------
Product_Id
Name
..

Ordered_Products
-----------------------
Order_Id
Product_Id

All I want to do is select the Product_Id and Name of the 4 most recently sold products without the risk of the list containing duplicate products.

This SQL...

SELECT DISTINCT
      op.Product_Id,
      o.Date_Purchased
FROM
      Orders o
      JOIN Ordered_Products op ON o.Order_Id = op.Order_Id
WHERE
      o.Date_Cancelled IS NULL
ORDER BY
      o.Date_Purchase DESC

.. doesn't select unique products due to the "Date_Purchased", the output of the above SQL statement is:

Product_Id  Date_Purchased
----------- -----------------------
21          2008-09-13 20:03:44.220
52          2008-09-13 20:03:44.220
37          2008-09-10 21:11:01.127
46          2008-09-10 21:01:36.593
46          2008-09-09 20:43:05.063

Thanks in advance for any help.

Ad
0
Comment
Question by:expert-ad
  • 2
4 Comments
 
LVL 82

Expert Comment

by:hielo
ID: 22763060
try:

SELECT DISTINCT TOP 4
      op.Product_Id,
      o.Date_Purchased
FROM
 Orders as o, Products as p, Ordered_Products as op
WHERE 
      o.Order_id=op.Order_id
AND 
      p.Product_Id = op.Product_Id
AND 
      o.Date_Cancelled IS NULL
ORDER BY
      o.Date_Purchase DESC

Open in new window

0
 
LVL 18

Accepted Solution

by:
mdougan earned 250 total points
ID: 22763080
SELECT Top 4 DISTINCT
      op.Product_Id,
       p.name,
      MAX(o.Date_Purchased) as Date_Purchased
FROM
      Orders o
      JOIN Ordered_Products op ON o.Order_Id = op.Order_Id
      JOIN Products P on op.Product_id = P.Product_id
WHERE
      o.Date_Cancelled IS NULL
group by
      op.Product_Id,
       p.name
ORDER BY
      3 DESC
0
 
LVL 18

Expert Comment

by:mdougan
ID: 22763095
Maybe it is SELECT DISTINCT TOP 4 rather than SELECT TOP 4 DISTINCT

But, you do have to group by the Product, Product Name
0
 

Author Closing Comment

by:expert-ad
ID: 31508076
Thank you!
0

Featured Post

U.S. Department of Agriculture and Acronis Access

With the new era of mobile computing, smartphones and tablets, wireless communications and cloud services, the USDA sought to take advantage of a mobilized workforce and the blurring lines between personal and corporate computing resources.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Everyone has problem when going to load data into Data warehouse (EDW). They all need to confirm that data quality is good but they don't no how to proceed. Microsoft has provided new task within SSIS 2008 called "Data Profiler Task". It solve th…
In this article I will describe the Backup & Restore method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
Using examples as well as descriptions, and references to Books Online, show the documentation available for date manipulation functions and by using a select few of these functions, show how date based data can be manipulated with these functions.
Via a live example, show how to extract insert data into a SQL Server database table using the Import/Export option and Bulk Insert.

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

27 Experts available now in Live!

Get 1:1 Help Now