1

SQLServer2008データベースに次のテーブルがあります

dbo.FormEmployment
------------------
employmentID int (PK)
formID int (FK)
gradeID int
employerName nvarchar

gradeIDに基づいてすべてのユーザーを選択するクエリを作成したいと思います。現時点では、次のクエリがあります

DECLARE @gradeID int
SET @gradeID = 1

SELECT distinct u.userID, u.userTypeID, u.firstName, u.lastName, u.email, u.password, u.contactNumber, u.organisationID, u.emailVerificationCode, u.mobileVerificationCode, u.userStatusID 

FROM [User] u, dbo.FormEmployment emp, dbo.Form f

WHERE u.userTypeID = 47 
--Grades
AND emp.gradeID = @gradeID
AND f.formID = emp.formID
AND f.locumID = u.userID

上記のクエリを使用すると、単一のgradeIDを記述して、そのgradeIDに一致するすべてのユーザーを取得できます。ただし、いくつかのgradeIDを指定できる必要もあります。たとえば、パラメーター@gradeIDを次のようにします。

SET @gradeID = 1、2、3

グレード1、2、または3のすべてのユーザーを取得できるようにします。

とにかくこれを行う方法はありますか?私がアプリケーションのために構築しなければならない検索はそれに依存しているので、これに関するどんな助けやガイダンスも大いにありがたいです。

ありがとう。

編集

検索がどのように機能するかについての詳細。

各GradeIDは、データベース内のテーブルに保存されます。ユーザーにはgradeIDのチェックボックスリストが表示され、このリストから必要な数のgradeIDを選択できるようになります。[送信]をクリックすると、選択したgradeIDがストアドプロシージャに渡され、検索が実行されます。

4

2 に答える 2

3
DECLARE @grades
        TABLE
        (
        id INT
        )

INSERT
INTO    @grades
VALUES
        (1),
        (2),
        (3)

SELECT   u.userID, u.userTypeID, u.firstName, u.lastName, u.email, u.password, u.contactNumber, u.organisationID, u.emailVerificationCode, u.mobileVerificationCode, u.userStatusID 
FROM     [User] u
WHERE    userId IN
         (
         SELECT  f.locumId
         FROM    FormEmployment emp
         JOIN    Form f
         ON      f.formId = emp.formId
         WHERE   emp.gradeId IN
                 (
                 SELECT  id
                 FROM    @grades
                 )
         )
         AND u.userTypeID = 47 
于 2012-05-30T09:54:25.780 に答える
0

1つの可能性:

SELECT (...) 
FROM (...) 
WHERE emp.gradeID IN (@gradeID1, @gradeID2, @gradeID3)

パラメーターの数がわからない場合は、実行時にsql IN句を生成できます(同時に、パラメーターをSqlCommandインスタンスに追加します)。

于 2012-05-30T09:50:23.400 に答える