I have 2 tables:
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'
I’m trying to do a query that returns me the latest changes in currency to the dollar. I mean the result:
id_factor | d_change | date
--------------------------------------
5 0.12 2012-06-09
6 0.11 2012-06-10
I can know the last date for individual factor:
SELECT MAX( date )
FROM money_change
WHERE id_factor = 6
but as you might know the last date for each factor of “Dollar”? I tried something like this:
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"
but I returned:
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
I think I need to enter the ‘where’ in the subquery, but as it dynamically for each factor?
Try this query: