データベースには、roles_usersという名前のテーブルがあります。これは、ユーザーが持つすべての役割を保持します。ここには、user_id、role_idという2つの列があります。SQL:NOT IN INクエリ
余分な役割を持たない通常のユーザーは、この表に1行あります。この行にはrole_idが1つあります。
管理者は、この表に2行あります。このようROLE_ID 2
とROLE_ID 1、および1行でワン:
user_id role_id
88 1
88 2
99 1 // Only one row with that user_id, so he's a user
今存在するどのように多くのユーザー/管理者/販売者/パートナーカウントしようとしてイム。
売り手は、3行、ROLE_ID 1のものを持っているので、私は試した4
ROLE_ID、2をROLE_IDとパートナーが1をROLE_IDた3
ROLE_IDこの:
SELECT user_id FROM roles_users WHERE role_id IN (1) // MEMBERS ONLY
SELECT user_id FROM roles_users WHERE role_id IN (1,2) // ADMIN
SELECT user_id FROM roles_users WHERE role_id IN (1,2,3) // SELLER
SELECT user_id FROM roles_users WHERE role_id IN (1,4) // PARTNERS
しかし、これらのクエリ正しく動作しません。彼らは私に、それが想定されているよりも終わったカウントを与える。そして、私はこれがすべての行を排除しないためだと信じている
私は、任意の行role_id 1とそれはthats。
どうすればいいですか?したがって、メンバーを調べるときに、user_idに2,3,4
select distinct user_Id – Sparky
あなたが必要とする関係演算子は[division](http://en.wikipedia.org/wiki/Relational_algebra#Division_.28.C3.B7.29)です。これは[サプライヤー誰がすべての部品を供給するのか」(http://www.dbdebunk.com/page/page/772076.htm)。推奨される読書[ここ](http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/)、[ここ](http: //www.dbdebunk.com/page/page/772076.htm)および[here](http://www.cs.arizona.edu/~mccann/research/divpresentation.pdf)を参照してください。 – onedaywhen