2

テーブル:

CREATE TABLE `messages` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `from_user_id` int(11) unsigned NOT NULL,
  `to_user_id` int(11) unsigned NOT NULL,
  `seen` tinyint(1) NOT NULL DEFAULT '0',
  `sent` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `message` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `messages` (`id`, `from_user_id`, `to_user_id`, `seen`, `sent`, `message`)
VALUES
    (1,2,1,0,'2013-11-06 11:05:42','Hello!'),
    (2,1,2,0,'2013-11-06 11:05:52','Hello you too!'),
    (3,3,1,0,'2013-11-06 11:06:08','Whats up?'),
    (4,1,3,0,'2013-11-06 11:06:27','Not much');

これを sqlfiddle に入れますが、ダウンしていて、過去 32 時間アクセスできません。

SO を検索したところ、いくつかの関連トピックが見つかりましたが、グループ化の要件が異なるため、プロジェクトに適用できませんでした。

クエリについては、現在のユーザー ID とターゲット ユーザー ID を知っています。これに基づいて、これら 2 人のユーザーのすべての会話を日付順に並べてクエリで返すようにします。

私は次のようなことを考えていました:

SELECT message FROM messages WHERE from_user_id = 1 OR to_user_id = 1 [but where do I limit this query to target user 3?]

言い換えれば、私は選択したい:

(3,3,1,0,'2013-11-06 11:06:08','Whats up?')
(4,1,3,0,'2013-11-06 11:06:27','Not much')

ユーザー 1 の場合、ユーザー 3 との会話。すべて。

4

1 に答える 1