0

ストアド プロシージャに問題があります。

一般的な考え方は、4 つのパラメーター (選択可能または選択不可) を選択し、正しい結果を返すことができるようにすることです。これを 2 つのパラメーター (キャンパス ID は必須) で機能させることができないため、他のパラメーターは気にしませんでした。

問題はwhere句にあります

       WHERE ac.AC_Campus_ID = @CampusID AND
          (

                ac.AC_College_ID IN (CASE @CollegeID
                WHEN 0 THEN (select distinct AC_College_ID from AC_Academic_Choice)
                ELSE @CollegeID
                END))

これは一例です。1 のキャンパス ID を選択し、1 の大学 ID を選択しました。クエリは、これら 2 つのパラメーターの結果を返します。

1 のキャンパス ID と 0 の大学 ID を選択すると、「サブクエリが複数の値を返しました。これは、サブクエリが =、!=、<、<=、>、>= に続く場合、または次の場合には許可されません。サブクエリが式として使用されています。」

2 番目の入力を行うと、システム内のすべての大学 ID のすべての結果が必要になります。

これを機能させる方法についてのアイデアはありますか?

ありがとうございました!

4

2 に答える 2

3

これを書き直して、目的の結果を得る 1 つの方法を次に示します。

...
WHERE ac.AC_College_ID IN (
  SELECT DISTINCT AC_College_ID 
  FROM AC_Academic_Choice
  WHERE AC_College_ID = 
    CASE @CollegeID
      WHEN 0
      THEN AC_College_ID 
      ELSE @CollegeID 
    END
)
于 2013-02-21T21:33:00.173 に答える
0

試す:

   WHERE ac.AC_Campus_ID = @CampusID AND
      (SELECT 1 WHERE ac.AC_College_ID IN 
            (CASE @CollegeID
            WHEN 0 THEN (select distinct AC_College_ID from AC_Academic_Choice)
            ELSE @CollegeID
            END
            )
      )
于 2013-02-21T21:32:27.867 に答える