2013-02-17 85 views
0

我有一个MySQL表中显示了卖家表如下所示:MySQL的选择MAX独特价值

advertiseid[pk] | customerid[fk] | productsid[fk] | quantites_advertised | price_advertised 
------------------------------------------------------------------------------------------ 
     1    2    2    4.00     2.00 
     2    4    3    5.00     2.50 
     3    3    2    1.00     1.00 

的最早记录是指..This意味着客户ID 2是卖choclates(产品编号1)用于4KG的@£2.00

我想选择的每个产品的ID,以便查询显示最小的不同产品的:因此,该表将是:

advertiseid[pk] | customerid[fk] | productsid[fk] | quantites_advertised | price_advertised 
    ------------------------------------------------------------------------------------------ 
      2    4    3    5.00     2.50 
      3    3    2    1.00     1.00 

查询输出产品2和3的最小价格,因为产品3是最便宜的价格和产品2的唯一产品,因此输出的是4.00和1.00之间的最小值。说我有各种不同的产品,我将如何能够实现这样的事情?我曾尝试此查询,但它是不正确:

select c.Fname p.ProductName, s.ProductID, s.Quantity, s.Price 
FROM sellers s, products p, customer c 
WHERE s.Price = (select MIN(Price) FROM sellers WHERE 
p.ID=s.ProductID AND c.ID=s.cid); 

任何人有任何想法我如何能实现我的预期的输出?

回答

0

你可以使用过滤inner join

select * 
from YourTable yt 
join (
     select productsid 
     ,  min(price_advertised) as min_price_advertised 
     from YourTable 
     group by 
       productsid 
     ) filter 
on  filter.productsid = yt.productsid 
     and filter.min_price_advertised = yt.price_advertised 
+0

哇感谢的人这个作品就像我想要的。 Iv在这方面花了很多时间,并且无法使其工作。我现在试着修改它,以便它显示用户请求的最便宜的价格产品。如果我卡住了,如果我问你好吗? – johnny 2013-02-17 17:34:01

+0

如果您有新问题,请提出一个新问题。 StackOverflow上有许多知识渊博的用户乐意提供帮助! – Andomar 2013-02-17 17:35:05

+0

不,我的意思是帮助你回答这个问题。但是,我明白谢谢你的帮助再次:) – johnny 2013-02-17 17:40:14