我的多对多关系出了问题。
客户表格列 clientID,名称,地址等。
用户表格列 userID,名称,地址等。
Users_clients列: userID,clientID。
每个客户端都可以连接多个用户,用户可以拥有多个客户端。
现在我的users_clients
表包含:
userID | clientID<br>
1 | 2
1 | 3
2 | 2
2 | 3
3 | 3
3 | 2
4 | 1
在我的php页面上,我想要一个尚未附加到客户端的用户列表。
实施例。如果我点击具有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
希望这对你有意义。随意问:)
答案 0 :(得分:0)
您可以采用不同的方式处理。
首先请求使用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);
希望这会有所帮助;
答案 1 :(得分:0)
您是否尝试过DISTINCT指令?
select distinct u.id from users u
INNER JOIN users_clients uc
ON u.userID = uc.userID
WHERE uc.clientID =3;