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