2012-06-07 11 views
0

我有2個表:Mysql的,最大日期格式每個關係

money_change:

id_change | id_factor | d_change | date 
--------------------------------------------- 
1   5   0.10  2012-06-07 
2   6   0.11  2012-06-07 
3   5   0.12  2012-06-09 
4   6   0.11  2012-06-10 
5   8   1.09  2012-06-03 

money_factor:

id_factor | money_base | money_change 
-------------------------------------- 
5   'Dollar'  'Yen' 
6   'Dollar'  'Euro' 
7   'Euro'  'Dollar' 
8   'Euro'  'Yen' 

我嘗試這樣做,返回我的最新查詢貨幣對美元的變化。我指的是結果:

id_factor | d_change | date 
-------------------------------------- 
5   0.12  2012-06-09 
6   0.11  2012-06-10 

我可以知道個人因素的最後日期:

SELECT MAX(date) 
FROM money_change 
WHERE id_factor = 6 

但正如你可能知道的「美元」的各要素的最後日期?我想是這樣的:

SELECT id_factor, d_change, date 
FROM money_change c 
INNER JOIN money_factor f 
ON f.id_factor = c.id_factor 
LEFT JOIN (
    SELECT MAX(date) AS date 
    FROM money_change 
) AS Last 
ON c.dRegistro = Last.date 
WHERE money_base = "Dollar" 

但我回:

id_factor | d_change | date 
-------------------------------------- 
5   0.10  2012-06-07 
6   0.11  2012-06-07 
5   0.12  2012-06-09 
6   0.11  2012-06-10 

我想我需要在子查詢中輸入「其中」,但因爲它動態地爲每個因素?

回答

1

嘗試此查詢:

SELECT 
    t.id_factor, 
    t.d_change, 
    t.date 
FROM 
(
    SELECT 
     mc.id_factor, 
     mc.d_change, 
     mc.date 
    FROM 
     money_change mc 
    INNER JOIN 
     money_factor mf USING(id_factor) 
    WHERE 
     mf.money_base = "Dollar" 
    ORDER BY 
     mc.date DESC 
) t 
GROUP BY 
    t.id_factor 
+0

你好,我不得不添加/修改:WHERE money_base = 「美元」 ORDER BY mc.date DESC ......這個工作。請更正它以評價您的答案。謝謝! – csotelo