[英]how to filter results from mysql inner join query
我的多對多關系有問題。
客戶端表列: 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和client2,則不會顯示該查詢。
該查詢顯示
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);
希望這會有所幫助;
您是否嘗試過DISTINCT指令?
select distinct u.id from users u
INNER JOIN users_clients uc
ON u.userID = uc.userID
WHERE uc.clientID =3;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.