php-如何让所有登录用户不是MySQL中的朋友的用户?
作者:互联网
我完全能够获得所有已登录用户的当前好友,对此,我可以在此处执行此查询-
SELECT users.*
FROM users
LEFT JOIN friends
ON users.id = friends.friend_id
WHERE friends.user_id = $user_logged_in_id
但是我想做相反的事情,我无法弄清楚.
我正在尝试做朋友逻辑.
我需要让所有当前登录用户还不是与之成为朋友的用户
我有一个用户表和一个朋友表,充当用户与其朋友之间的多对多关系.朋友表中的键是user_id朋友_id.
为了说明某人是与另一个用户的朋友(假设已登录的用户ID为3,而朋友用户ID为6),则将user_id = 3和friend_id = 6放在一行,然后将另一行的ID翻转以说明友情相反,user_id = 6,friend_id = 3.
用户表
|---------------------|------------------|
| id | username |
|---------------------|------------------|
| 1 | sonja12 |
|---------------------|------------------|
| 2 | dorris32 |
|---------------------|------------------|
| 3 | billy32 |
|---------------------|------------------|
| 4 | micha97 |
|---------------------|------------------|
| 5 | travis841 |
|---------------------|------------------|
| 6 | johnny28 |
|---------------------|------------------|
朋友表
|---------------------|------------------|------------------|
| id | user_id | friend_id |
|---------------------|------------------|------------------|
| 1 | 3 | 6 |
|---------------------|------------------|------------------|
| 2 | 6 | 3 |
|---------------------|------------------|------------------|
编辑:
我想我的问题已经缩小了一点,以便更加简洁.
我想从用户表中获取所有用户,这些用户的ID不会在好友表中当前登录用户的user_id旁边显示为好友ID.
解决方法:
您以一种奇怪的方式思考问题.将其视为需要创建的集合的交集,而不是缺少id时存在的集合,可能会有所帮助.
从用户中选择ID,其中ID!= $logged_in_user和ID NOT IN(从有SELECT的用户中选择friend_id,其中user_id = $logged_in_user)
标签:join,many-to-many,sql,mysql,php 来源: https://codeday.me/bug/20191110/2015060.html