0

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

    Message_group
    ---------------------------------------
    message_group_id | profile_id | group_id
    ----------------------------------------

    1                    sN07X2    4934Me
    2                    abcde2    4934Me
    3                    Red3zw    3492Ga
    4                    Hgr43s    3492Eh
    ----------------------------------------

    Private_Message
    ----------------------------------------
    msg_id | msg_txt | profile_id | occured_at
    -----------------------------------------
    1         Hello       abcde2      2013-06-26
    2         Bye Bye     abcde2      2013-06-26
    3         Ciao        Red3zw      2012-06-26|
    -----------------------------------------

   Users
   -------------------------------------------
   profile_id | name | sirname | 
   sN07X2       Jin     OO
   abcde2      Gerry    UU
   Red3zw      Lola     YY
   Hgr43s      Scot     EE

そのような結果が欲しい

  profile_id | profile_id2 | group_id | msg_text
   abcde2         sN07X2      4934Me     abcde2

この結果が欲しいのですが、msg_text のように最後のメッセージのみです。私が書いたこのクエリは私にこの結果を与えます、制限1でフィールドmsgを追加する方法がわかりません:

  profile_id | profile_id2 | group_id |
   abcde2         sN07X2      4934Me   

クエリ:

SELECT * FROM message_group a
JOIN message_group b ON a.group_id=b.group_id
INNER JOIN users ON users.profile_id = b.profile_id  
WHERE a.profile_id = 'sN07X2'
AND b.profile_id != a.profile_id
4

1 に答える 1

1

テストされていませんが、可能性があります

SELECT a.*,b.*,(SELECT msg_txt FROM Private_Message p WHERE p.profile_id=a.profile_id ORDER BY occured_at DESC LIMIT 1) 
FROM message_group a
JOIN message_group b ON a.group_id=b.group_id
INNER JOIN users ON users.profile_id = b.profile_id  
WHERE a.profile_id = 'sN07X2'
AND b.profile_id != a.profile_id

しかし、私はあなたの状態を本当に理解していません: AND b.profile_id != a.profile_id??!!

于 2013-06-30T15:21:08.783 に答える