2011-01-27 11 views
1

私はms sql express 2008を使用していますが、以下は私の問題です。私のシステムには、2つの役割 '1'と '2'を持つユーザーと、ただ1つの役割 '2'を持つユーザーがあります。このストアドプロシージャでは、私はちょうど一つの役割を持つユーザーを取得したい。私は '2'の役割しか持たない特定のユーザーをシステムから取得したい。SQL Serverで1つの役割しか持たないユーザーを取得する

次は私のSPです:

SELECT  tblUsers.user_id, tblUsers.user_username, tblUsers.user_password, tblUsers.user_name, tblUsers.user_surname, tblUsers.user_email 
FROM  tblRoles 
INNER JOIN tblUserRole ON tblRoles.role_id = tblUserRole.role_id 
INNER JOIN tblUsers ON tblUserRole.user_id = tblUsers.user_id 
WHERE  (tblUserRole.role_id = 2) AND NOT (tblUserRole.role_id = 1) 

この文はまだだけでなく、私に二つの役割を持つユーザーを得ています。 having句と一緒にgroup byを使用して

答えて

2

SELECT tblUsers.user_id, tblUsers.user_username, 
     tblUsers.user_password, tblUsers.user_name, 
     tblUsers.user_surname, tblUsers.user_email, 
     count(1) 
    FROM tblRoles INNER JOIN 
     tblUserRole ON tblRoles.role_id = tblUserRole.role_id INNER JOIN 
     tblUsers ON tblUserRole.user_id = tblUsers.user_id 
GROUP BY tblUsers.user_id, tblUsers.user_username, 
     tblUsers.user_password, tblUsers.user_name, 
     tblUsers.user_surname, tblUsers.user_email 
HAVING count(1) = 1 
+0

は、あなたは私がそれを理解する助けてくださいすることができます。クエリを実行しようとすると、列 'tblUsers.user_id'が集計関数またはGROUP BY句に含まれていないため、選択リストで無効です。カラムuser_idを削除しようとしましたが、SELECT文の最初のカラムで常に同じことを伝え続けます – IanCian

+0

申し訳ありません。今すぐ答えを更新しました。うまくいくはずです。 –

+0

10倍のアップデートが今すぐうまくいきました。私はそれを理解できます:) – IanCian

関連する問題