php - Mysql - 如何获取同一个表的两个外键列的数据

标签 php mysql sql

我的数据库中有两个表

  1. 表:users 列:idusernameemail

  2. 表:users_messages 列:idtofrommessages , 发送时间

tofromusers 表中的 users 键。问题是我需要:
“从用户名和消息中选择所有用户”。

例如,如果表格行如下所示:

From, To,   Message
11,   14,   Hi, How are you
14,   11,   Hello,

如果 11 是 john,14 是 mark,那么我需要这样的输出:

From,   To,     Message
john,   mark,   Hi, How are you
mark,   john,   Hello,

在我的查询中,我只能从列或列中获取用户名,但不能同时从两者中获取用户名。我怎样才能执行一个查询,让我从和到两个用户名?

以下查询给出空结果:

SELECT  u.username, m.message, m.from, m.to  
FROM  `users_messages` m,  `users` u
where 
m.from = u.id and  m.to = u.id

LIMIT 0 , 30  

我尝试了其他查询,但无法获得所需的输出。消息表是否也需要自联接?

最佳答案

SELECT u1.username AS "sender", u2.username AS "recipient", m.message, m.from, m.to  
FROM `users_messages` m
LEFT JOIN `users` u1 ON (u1.id = m.from)
LEFT JOIN `users` u2 ON (u2.id = m.to)
WHERE m.from = XX OR m.to = XX

关于php - Mysql - 如何获取同一个表的两个外键列的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21795567/

相关文章:

php - 插入失败:Column count doesn't match value count at row 1

php - 单击时更改按钮文本并再次单击时更改回来

php - Google App Engine 和 PHP 写入文件

php - 从首页重定向时网页显示空白页

php - Android 本地数据库通过 PHP 转换为 XML 到 mySql。

php - 使用 POST 方法使用 PHP 在 Android 上通过异步任务更新 SQL 数据库

Mysql:行分组时提供的值有多可靠?

php - 检查 unix 时间戳是否在 MySQL 中的当前月份内

php - 多个 INSERT INTO 查询

mysql - Mysql中的多主复制到单从