2009-12-30 79 views
2

我真的很糟糕的解釋,但我會嘗試。假設我有以下表格:MYSQL查詢返回最近一次輸入,無論輸入日期如何

CREATE TABLE inventory (
    Store VARCHAR(16), 
    Product_Code INT UNSIGNED, 
    Inventory_Qty INT UNSIGNED, 
    `Date` DATE 
); 

CREATE TABLE Alias (
    computername VARCHAR(16), 
    storename VARCHAR(32), 
); 

我想創建一個MYSQL查詢,該查詢返回基於表中最後一項的數據。基於日期,我使用MAX函數做得很好,但我需要更高級的方法來查找特定產品輸入的最後一個項目,並返回最後一個數量,即使它不是相同的日期。這是數據的一個示例中,我想作爲結果:

 
Store| Product| Qty| Date 
S1 | 1115 | 10 | 12/30/09 
S2 | 1115 | 20 | 12/30/09 
S3 | 1115 | 5 | 12/29/09 
S4 | 1115 | 15 | 12/28/09 

查詢我已經是這一個,但它只返回S1和S2,因爲我上的日期最大,但我想回到最所有商店X系列產品的最新條目:

Select 
    alias.storename, 
    inventory.Product_Code, 
    inventory.Inventory_Qty, 
    inventory.Date 
    From inventory 
    Inner Join Alias On inventory.Store = Alias.computername 
    Where inventory.Date = (Select Max(inventory.Date) From inventory) 
    Order By Alias.storename, inventory.Product_Code 

如果你想在最近的記錄輸入到表中每個商店任何幫助,非常感謝

+0

對於任何人的幫助,你需要指出哪些答案看起來很接近,以及他們如何進一步幫助你。 – 2009-12-30 18:20:49

回答

2

看一看

SELECT i.* 
FROM (
      SELECT Store, 
        Product, 
        MAX(Date) MaxDate 
      FROM inventory 
      GROUP BY Store, 
         Product 
     ) MaxDates INNER JOIN 
     inventory i ON MaxDates.Store = i.Store 
         AND MaxDates.Product = i.Store 
         AND MaxDates.MaxDate = i.Date 

這將首先得到最大日期商店項目,然後返回該記錄,這就是它的最後條目。

如果我誤解了您的請求,請告訴我。

+0

這完全是我所需要的。非常感謝!! – chupeman 2009-12-31 07:42:18

1

,然後

Select a.storename, 
    i.Product_Code, i.Inventory_Qty, i.Date 
From Alias a 
    left Join inventory i 
     On i.Store = a.computername 
      and i.Date = 
      (Select Max(Date) 
       From inventory 
       Where Store = i.Store) 
Order By a.storename, i.Product_Code 
0

我相信這會得到你想要的東西:

SELECT 
    alias.storename, 
    inventory.Product_Code, 
    inventory.Inventory_Qty, 
    lastdate.date 
FROM (
    SELECT 
     store, 
     max(date) as date 
    FROM inventory 
    GROUP BY store 
    ) lastdate 
INNER JOIN inventory 
    ON inventory.store = lastdate.story 
     AND inventory.date = lastdate.date 
INNER JOIN alias 
    ON inventory.store = alias.computername 
ORDER BY 
    alias.storename, 
    inventory.Product_Code 

這將讓每個店上是商店出售的任何項目的最後日期出售的所有項目。