0

私は2つのテーブルを持っています:

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

サブクエリに「where」を入力する必要があると思いますが、要素ごとに動的にですか?

4

1 に答える 1

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
于 2012-06-07T21:42:45.007 に答える