如何筛选mysql内部连接查询的结果
问题描述:
我的多对多关系存在问题。如何筛选mysql内部连接查询的结果
客户表列: clientID的姓名,地址等
用户表列: 用户ID,姓名,地址等
Users_clients列: 用户ID,clientID的。
每个客户端可以连接多用户,用户可以有多客户端。
现在我users_clients
表包含此:
userID | clientID<br>
1 | 2
1 | 3
2 | 2
2 | 3
3 | 3
3 | 2
4 | 1
在我的PHP页面我想这是不是已经连接到客户端的用户列表。
Ex。如果我点击的客户端配置文件有clientID = 3
它应该显示一个未连接到此客户端的用户列表。
SELECT u.name, u.email, u.userID FROM users u
INNER JOIN users_clients uc
ON u.userID = uc.userID
WHERE uc.clientID !=3
这工作正常,但我如何创建我的MySQL查询,以便如果用户同时具有clientID 3和客户端2它不显示。
此查询显示
1 | 2 2 | 2 3 | 2 4 | 1
什么,我正在寻找的是:
3 | 2 4 | 1
希望这对你有意义。随意问:)
答
你可以处理不同。
首先请求一个clientId = 3的用户;
select u.id from users u
INNER JOIN users_clients uc
ON u.userID = uc.userID
WHERE uc.clientID =3;
然后你可以使用该请求获取除了那些谁拥有一个clientId所有用户= 3
最后请求是这样的:
select u.id from users u where u.id NOT IN (select u.id from users u
INNER JOIN users_clients uc
ON u.userID = uc.userID
WHERE uc.clientID =3);
希望这会帮助;
非常感谢。这解决了我的问题。 查询endend这样看: SELECT u.userID,u.name,u.email来自用户的ü\t \t \t \t \t \t 其中U。userID NOT IN(从用户中选择u.userID)INNER JOIN users_clients uc ON u.userID = uc.userID WHERE uc.clientID =:clientID –