2013-02-17 122 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