2016-06-24 6 views
0

各グループの最後の行(Group By user_id)が必要です。各グループの最後の行を取得し、配列全体をID(pk)DESCで順序付けし、他のテーブルと結合します。

表:user_messages

id(PK) | user_id(FK) | read_admin_status | created_at 
1   5     0    date 
2   5     0    date 
3   5     0    date 
4   5     1    date 
5   6     1    date 
6   6     1    date 
7   7     0    date 
8   7     0    date 

表:ユーザー

id | username 

は今からユーザー名を欲しい、次のような表の

構造でありますユーザーのテーブルと私はuser_messagesから他の詳細が欲しい。

ここで、user_idのデータをにして、最後の行だけを必要とします。 同様に他のグループのために私は各グループの最後の行をしたいとユーザーテーブル私はのユーザー名テーブルを結合してほしい。

可能であれば、お手伝いしてください。ありがとうございました。このクエリは、IDによってご注文時に最後のIDを取得することと同じである、メッセージの各ユーザーのグループで最大のメッセージIDを選択し、使用する

SELECT user_messages.id, users.username 
FROM (
    SELECT MAX(id) AS max_id 
    FROM user_messages 
    GROUP BY user_id 
) AS ids 
INNER JOIN user_messages ON ids.max_id = user_messages.id 
INNER JOIN users ON user_messages.user_id = users.id 

+1

あなたが望む結果は、 '4 5 1 date someusername'、' 6 6 1 date someotherusername'、 '8 7 0 date anotherusername'です。 –

答えて

1

あなたはこのような何かを試してみてください関連付けられたユーザーIDを取得してユーザー名を取得します。私はメッセージIDとユーザー名を選択しただけですが、それらのテーブルから必要な情報を得ることができます。

+0

それは完璧に働いてくれてありがとう:) – Siddharth

関連する問題