SQL连接表将id转换为用户名

时间:2016-02-05 12:59:15

标签: php mysql join

我有一个用户表:

| username | user_id |

朋友表格:

| user_id | friend_id |

我发布user_id以检索某个用户的朋友。

我正在使用$query = "SELECT friend_id FROM friends WHERE user_id = ?"
我也想要这些朋友的用户名,所以我想加入这些表。

$query = 'SELECT f.friend_id,u.username FROM friends f WHERE f.user_id = ? JOIN users u ON u.user_id = f.friend_id'  

但在这种情况下结果为零。我的逻辑错了吗?

6 个答案:

答案 0 :(得分:1)

更新您的MYSQL查询:

$query = 'SELECT f.friend_id,u.username FROM friends f WHERE f.user_id = ? JOIN users u ON u.user_id = f.friend_id'

使用此查询:

$query = 'SELECT f.friend_id, u.username FROM friends f JOIN users u ON u.user_id = f.friend_id WHERE f.user_id = ?'

无论我们在表格中使用MYSQL JOIN ... ON ,都会将此项置于 WHERE 之类的条件子句之前。

答案 1 :(得分:0)

你的查询应该是这个

SELECT f.friend_id,u.username FROM friends f JOIN users u ON u.user_id = f.user_id WHERE f.user_id = ?

答案 2 :(得分:0)

$query = 'SELECT f.friend_id, u.username FROM friends f JOIN users u ON u.user_id = f.friend_id where f.user_id = ?'

答案 3 :(得分:0)

$query = "select f.`friend_id`, u.`username` 
          from `users` u 
          join `friends` f on u.user_id = f.user_id
          join `users` u2 on u2.user_id = f.user_id
          where u2.`user_id` = ?"

答案 4 :(得分:-1)

这样的事情应该有效

$query = "select f.`friend_id`, u.`username` from `friends` f
          left outer join `users` u on u.`user_id`=f.`friend_id` 
          where f.`user_id` = ?";

没有发现初始错误...

答案 5 :(得分:-1)

应该是

$query = 'SELECT f.friend_id,u.username FROM friends f WHERE f.user_id = ? ANd u.user_id = f.user_id'