2016-12-04 14 views
0

こんにちは私は1つのユーザーであり、もう一つは、ある2つのテーブルを持っているuser_detailsby groupはmysqlのどこで動作していませんか?

ユーザテーブルはuser_detailsテーブルが

id user_id money  created_on 
------------------------------------ 
1  1  2000  2016-12-01 
2  1  5000  2016-12-02 
3  1  6000  2016-12-03 
4  2  2050  2016-12-01 
5  2  5020  2016-12-02 
6  3  6000  2016-12-04 

ある

id name 
--------- 
1  John  
2  Tom   
3  Amy 
4  Kat 

であると私は

name user_id money  created_on 
------------------------------------ 
John  1  6000  2016-12-03 
Tom  2  5020  2016-12-02 
Amy  3  6000  2016-12-03 
Kat  4  NULL  NULL 
ようになる必要があります

私の質問はどこですか? user_detailsテーブルの最近のCREATED_ONは、このために私は次のクエリを書いたが、私はいずれかのuser_idによってあなたの内側のサブクエリで私のクエリ

SELECT * FROM `user` as `u` LEFT JOIN (SELECT user_id,money,created_on  FROM `user_details` WHERE created_on IN (SELECT MAX(created_on) FROM user_details group by user_id)) `userdata` ON `u`.`id` = `userdata`.`user_id`; 

答えて

1

で何が間違って、あなただけのグループを私に言うことができるすべての結果を取得していますが、他のクエリで現在選択しているユーザのuser_idでフィルタリングしないでください。言い換えれば

:あなたは私の正確な結果を与えた

SELECT * FROM `user` as `u` LEFT JOIN 
    (SELECT user_id,money,created_on FROM `user_details` x WHERE created_on IN 
     (SELECT MAX(created_on) FROM user_details 
       WHERE x.user_id = user_details.user_id)) 
     `userdata` ON `u`.`id` = `userdata`.`user_id`; 
+0

:あなたもちょうどそのような外側のサブクエリにエイリアスを使用して、指定したユーザーのMAX(created_on)を選択し、user_idは、グループには必要ありません。ありがとうございました – ohmygood

+0

先月の最大日付を取得する方法、私がINTERVALを使用しようとしたとき - 1ヶ月データを取得していない – ohmygood