从所有用户检索用户配置文件数据';s的朋友使用php和mysql


Retrieve user profile data from all of a user's friends using php and mysql

我在网上搜索了几个例子,研究后仍然需要一些帮助。我有两张桌子:用户和朋友。

users表有列:

  • id bigint(20(未签名的AUTO_INCREMENT
  • 用户名varchar(50(
  • profile_picture varchar(200(
  • 状态varchar(20(
  • status_message varchar(200(

好友表有列:

  • id bigint(20(未签名的AUTO_INCREMENT
  • initiator_user_id bigint(20(
  • friend_user_id bigint(20(

我希望能够从指定用户(initiator_user_id(的朋友(friend_user_id(的所有用户那里获得用户名、profile_picture、状态、状态消息。经过研究,我相信这是通过工会完成的。

我已经尝试了下面的查询,但它不起作用:

SELECT friend_user_id 
FROM friends
WHERE initiator_user_id = 1001 //gets all the id's of the friends of user 1001
UNION All
SELECT profile_picture, status, status_message, username from users
WHERE friend_user_id = id //gets all the profile data of user's profiles that are friends of user 1001

我需要的是为所有朋友显示朋友数据:

  • id bigint(20(未签名的AUTO_INCREMENT
  • 用户名varchar(50(
  • profile_picture varchar(200(
  • 状态varchar(20(
  • status_message varchar(200(

我的问题:

  • 是否需要更改有关表的任何内容(任何外键约束等(
  • 我需要更改什么才能使此示例生效

使用一个简单的INNER JOIN:

SELECT u.*
FROM users AS u
INNER JOIN friends AS f ON f.friend_user_id = u.id
WHERE f.initiator_user_id = 1001