Php Mysql facebook风格的消息连接3个表
现在我知道ben有两次对话(一次与alex对话,另一次与john对话) 我的问题是 如何连接3个表并像这样取出 对话1-亚历克斯(id=2)简历1中的最后一条消息(本,你在吗?) 对话I_3-约翰(id=3)简历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
就像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