2017-07-15 3 views
-1

私はMySQLで遊び始めていますが、私は1つの問題で困惑しているようです。Mysqlは2つのテーブルを結合して制限し、1つのテーブルを注文します

私は残した2つのテーブルを残していますが、それは十分ではありません。私は

id 
1 
2 
3 

テーブルメッセージ

chat_id 
1 
2 
3 

SELECT * 
FROM (SELECT * FROM `messages`) AS m LEFT JOIN 
    chat as c 
    ON m.chat_id = c.id 
WHERE c.one ='$user_id' OR c.two = '$user_id' 
GROUP BY c.id, m.chat_id 
ORDER BY m.dates DESC 
LIMIT 8 
+0

クエリから何が必要ですか? IDで注文されたチャット内のすべてのメッセージのリスト? –

+0

@JoeyPintoはいいいえユーザーが新しいメッセージを送信したときこのメッセージがトピック –

+0

に更新されました質問に適切なデータサンプルと期待される結果を追加してください – scaisEdge

答えて

0

あなたが取得しようとしている彼らは例

順序がトップで一つのテーブルにidであることと、このテーブルのメッセージダウン

テーブルチャットをしたいです各チャットからの最新のメッセージを含むチャットのリスト?

もしそうなら、あなたの最善の策は、あなたがこのように問い合わせることができるので、チャットテーブルにカラムを追加して、「latest_message_id」を含めることです。そうしないとあなたが本当に大きなを実行する必要があります

SELECT * FROM chat LEFT JOIN messages ON messages.id = chat.latest_message_id

多くのCPUとメモリを浪費するサブクエリ

+0

Dabはい私はメッセージで1つのテキストメッセージとリストユーザーを表示したい –

関連する問題