次のデータベースからいくつかのフィールドを取得しようとしています。
CREATE TABLE `messages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`message` text,
`date` datetime DEFAULT NULL,
`fra` int(11) DEFAULT NULL,
`til` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
Fra=送信者ID;
til =レシーバーID
たとえば、次の値があります。
(1, 'This is a message for Obama', '2012-11-14 01:12:06', 1, 3),
(2, 'Hello John! How are you?', '2012-11-14 01:23:43', 3, 1),
(3, 'Hey Jack', '2012-11-14 01:28:11', 1, 2),
(4, 'How are you son?', '2012-11-14 01:28:15', 1, 2),
(5, 'everything allright for you?', '2012-11-14 01:28:23', 1, 2);
データベースからフィールドを取得する方法は次のとおりです
。あるユーザーから別のユーザーへの固有の会話を取得したい。ユーザー1がユーザー3にメッセージを送信し、ユーザー3がユーザー1に返信した場合、データベースの最後のフィールドのみを選択したいと思います。または、ユーザー1がユーザー2に3つのメッセージを送信した場合、ユーザー1からユーザー2に3番目のメッセージのみを取得したいので、結果として2行のみを取得する必要があります。
私が試してみました:
SELECT DISTINCT * FROM messages WHERE fra='".$_SESSION['userid']."' OR til='".$_SESSION['userid']."' GROUP BY fra,til"
と
"SELECT DISTINCT(til) AS til FROM messages WHERE fra='".$_SESSION['userid']."' OR til='".$_SESSION['userid']."' ORDER BY id DESC"
しかし、私は私が望む結果を得ることができません。
誰かが私にこれを行う方法を説明できますか?
編集: 2人のユーザー間で送信された最後のメッセージを表示するユーザーメッセージのスレッド
のみを作成したい(これがクエリの範囲です)