2016-04-04 5 views
2

このトピックに関する多くの質問と回答を読んだことがありますが、私にとっては何かを見つけることができません。PHP MYSQL - 異なる複数の列を1つとして

私は自分のウェブサイトに簡単なプライベートメッセージングシステムを作ろうとしています。私はこのようなテーブルを持っている:

private messages: id, to_id, from_id, message, time_sent 

私は今ではすべての名前がリストに一度だけ表示されます、メンバーが相互作用し、異なるユーザーで自分のページのリストを表示するには、Facebookのメッセージのような何かをしようとしています。しかし、唯一私が受け取った人々の、

SELECT * FROM private_messages WHERE (from_id = '$Sid' AND to_id = '$my_id') OR (from_id = '$my_id' AND to_id = '$Sid') ORDER BY time_sent ASC 

このクエリdistinctedリストを示しています

この

は私が私に私のユーザー($ my_id)としての参加すべてのメッセージを示しており、今持っているものです以下からのメッセージ:それは私が(Facebookのメッセージのリストのような)と相互作用するすべてのユーザーの明確なリストを与えるよう

SELECT DISTINCT(from_id) FROM private_messages WHERE to_id='$my_id' ORDER BY time_sent DESC 

は、どのように私はこれを書き換える必要がありますか? from_idとto_idの2つの列で区別する必要があると思いますが、どうすればいいですか?

私は質問がかなり曖昧に聞こえることを知っていますが、私は本当にこれ以上説明できません。前もって感謝します!

答えて

3

これを試してみてください:

SELECT DISTINCT IF(from_id = '$my_id', to_id, from_id) AS other_id 
FROM private_messages 
WHERE '$my_id' IN (to_id, from_id) 
ORDER BY time_sent DESC 
+0

が閉じ括弧が欠落していませんか? :SELECT DISTINCT(IF(from_id = '$ my_id'、to_id、from_id)AS other_id)FROM .... –

+0

@TomK。発言をありがとう。これはタイプミスでした。 'DISTINCT'は関数ではないので、括弧は必要ありません。 –

+0

あなたは正しいです、何かが見当たらないことを見ました...あなたは大歓迎です。 –

関連する問題