带有2个表的MySQL查询加入

时间:2011-11-29 02:34:49

标签: php mysql

我有用户,如下所示:

id    username
1       user1
2       user2
3       user3

msgs 这样:

t_id   sent_by   id    msg
1        2        1     whatever
2        3        1     is
3        2        1     here

users.id 是主键, msgs.id 是外键。在 msgs 表格中, ID sent_by 发送的邮件的目的地。

我想选择并显示 sent_by 用户名,只要登录用户(通过会话)为 msgs.id

为了澄清事情,这里是我想要做的伪代码:

  1. 用户已登录。将其userid存储到session
  2. 显示发送给我(登录用户)的消息的不同用户名。在上面的示例中,如果我的用户ID为1,则显示为user2, user3
  3. 我正在考虑使用join,但最终对sent_by和id进行了2次查询。这似乎不是一个有效的查询。

    我该怎么办?

2 个答案:

答案 0 :(得分:3)

这是一个简单的JOIN,因为您只想返回sent_by ID的用户名。

$sql = "SELECT DISTINCT
    users.username
    msgs.sent_by
  FROM users JOIN msgs ON users.id = msgs.sent_by 
  WHERE id = {$_SESSION['my_userid']}";

答案 1 :(得分:1)

SELECT DISTINCT u.username, m.sent_by
FROM msgs m
INNER JOIN users u ON u.id = m.sent_by
WHERE m.id = {$_SESSION['userid']}
ORDER BY m.t_id DESC