2016-12-26 2 views
1

最後の返信のためにチャットメッセージクエリーでユーザー情報テーブルに参加する必要があります。最後の会話クエリーでユーザーテーブルに参加する

mysql_query(" 
select * 
    from 
     chat 
     join 
     (select user, max(created) m , COUNT(*) AS msgCount 
      from 
       (
       (select mid, receiver user, created 
        from chat 
        where sender='$login_session') 
       union 
       (select mid, sender user, created 
        from chat 
        where receiver='$login_session') 
       ) t1 
      group by user) t2 
    on ((sender='$login_session' and receiver=user) or 
     (sender=user and receiver='$login_session')) and 
     (created = m) 
    order by created desc 
    "); 

私の問題は、私が好きなユーザ情報テーブルを結合する方法を見つけ出すことができないということです。最後の回答結果については

チャットテーブル

mid | sender | receiver| text | created 
    1 | chrys |  Paul| Hello | 2015-12-08 20:00 
    2 | chrys2 | Chrys | Hey  | 2015-12-08 20:10 

iは、そのスクリプトを使用しています以下:

id | username | photo_url | age | etcetera..... 

いくつかのアイデアはありますか? 私が必要とするのは、users_infoテーブルから写真、年齢などのsendindメッセージを受け取っているユーザーに関する情報を取得することです。

+0

あなたがしようとしていることを明確にすることはできますか?あなたにはユーザーのテーブルがあり、メッセージのテーブルがあります。クエリの実行時にどのような情報が必要ですか? –

+0

photo_url、年齢などは、users_infoテーブルにあります。 –

+1

これが役立つかどうかを確認してください。 http://stackoverflow.com/questions/41054587/join-multiple-row-column-mysql/41055339#41055339 –

答えて

0

はその間私は答えを見つけました。ここにあります:

select c.*, u.photo 
from chat c 
join users u on u.username = c.sender 
WHERE (sender = '$login_session' AND receiver = '$uid') OR 
     (sender = '$uid' AND receiver = '$login_session') 
0

あなたのクエリによると、ログインしたユーザーに対して最後にチャットメッセージを送受信しようとしています。そのために

select c.* 
from chat c 
join users u on u.id = c.receiver_id or u.id = c.sender_id 
where u.id = 'SESSION.User.Id' 
order by c.id desc 
+1

答えは部分的に機能します。私は答えを見つけ、私はここにそれを掲示した。 :) –

+0

更新していただきありがとうございます。 –

関連する問題