我有用户,如下所示:
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
为了澄清事情,这里是我想要做的伪代码:
userid
存储到session
。user2, user3
。我正在考虑使用join,但最终对sent_by和id进行了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