2011-02-03 16 views
1

を見つけていないために、私は2つのテーブルUSERSとUSERS_ASSOCIATIONSクエリ一切の関連するエンティティに

を持っているが単純化期すために、彼らは、ユーザーがIDを持つこの例のユーザーのためのように、相互に関連付けることができ、この

USERS  USERS_ASSOCIATION 
-----  -------------------------- 
|id |  |id |fk_id| fk_assoc_id | 
-----  -------------------------- 
| 1 |  | 1 | 1 | 2   | 
| 2 |  | 2 | 1 | 3   | 
| 3 |  -------------------------- 
| 4 | 
----- 

のように見えます1はユーザー2と3に関連付けられますが、4には関連付けられません。

特定のユーザーに関連付けられていないすべてのユーザーを検索するクエリを作成しようとしています。したがって、ユーザー1の例では、照会の結果は4になります。ユーザー2の場合、ユーザー2には関連がないため、照会の結果は1、3、および4になります。

は、これまでのところ、私はこれは間違っている知っているこの

SELECT * from USERS WHERE AND USERS.id <> (SELECT * FROM USERS_ASSOCIATION as UA INNER JOIN USESR as U ON UA.fk_assoc_id = U.id AND UA.fk_id = 1); 

を持っている、サブクエリは、特定のユーザーのために発見されたUSER_ASSOCIATIONSのすべてのリストを返します。

答えて

2

"<>"ではなく "not in"が必要なように見えます。これは、サブクエリに含まれていないユーザーのリストを返します。働い

SELECT * 
from USERS 
WHERE AND USERS.id not in (SELECT * FROM USERS_ASSOCIATION as UA INNER JOIN USESR as U ON UA.fk_assoc_id = U.id AND UA.fk_id = 1); 
+0

感謝。 @ジョンK. – JohnQuestIsASellOut

1
select * 
from USERS 
where id <> 1 
and id not in (select fk_id from USERS_ASSOCIATION where fk_assoc_id = 1) 
and id not in (select fk_assoc_id from USERS_ASSOCIATION where fk_id = 1) 
関連する問題