Php Mysql facebook风格的消息连接3个表

Php Mysql facebook风格的消息连接3个表,php,mysql,Php,Mysql,现在我知道ben有两次对话(一次与alex对话,另一次与john对话) 我的问题是 如何连接3个表并像这样取出 对话1-亚历克斯(id=2)简历1中的最后一条消息(本,你在吗?) 对话I_3-约翰(id=3)简历3中的最后一条消息(无论什么…) 就像facebook消息一样,主要的想法是你必须使用连接。标准联接语法在这里没有帮助,因为在联接中不能有OR语句。。在…上但是像这样的事情会起作用 //USER TABLE user_id name 1 ben 2 alex 3

现在我知道ben有两次对话(一次与alex对话,另一次与john对话)

我的问题是 如何连接3个表并像这样取出

对话1-亚历克斯(id=2)简历1中的最后一条消息(本,你在吗?)

对话I_3-约翰(id=3)简历3中的最后一条消息(无论什么…)


就像facebook消息一样,主要的想法是你必须使用连接。标准联接语法在这里没有帮助,因为在联接中不能有OR语句。。在…上但是像这样的事情会起作用

//USER TABLE
user_id name
1       ben
2       alex
3       john

//CONVERSION TABLE
c_id    user_one    user_2
1       2(alex)     1(ben)
2       2(alex)     3(john)
3       1(ben)      3(john)

//MESSAGE TABLE
m_id    c_id    send        receive     message
1       1       2(alex)     1(ben)      hi ben
2       1       2(alex)     1(ben)      ben, u there?
3       2       1(ben)      3(john)     whatever...

//QUERY 1
SELECT * FROM conversion WHERE user_one=1(ben)
OR user_two=1(ben)
在这里,我们将3个表连接在一起,获得最大消息ID(我假设ID是自动递增的,因此可以安全地假设ID越高,消息越老)和分组会话ID。这就是我们将如何获得涉及Ben(例如登录用户)的最旧消息和消息的会话详细信息

我以前在stack overflow上看到的一篇好文章是。当前的方法是内部连接


SQL Fiddle-

您好,非常感谢您的帮助,我已经做了测试,它提取了用户的名称,但是我需要的是其他用户的名称。如果你进入邮箱,你会看到亚历克斯:嗨,你在吗?(你谈话的最后一条信息)
SELECT c.c_id, u.user_id, u.name, MAX(m_id), message FROM message m, conversation c, user u
WHERE m.c_id = c.c_id
AND
(
c.user_one = u.user_id
OR
c.user_2 = u.user_id
)
GROUP BY c.c_id