2

現在の新しいクライアントがこのスタッフメンバーに割り当てられるように、関連付けられているクライアントの数が最も少ない人のIDを見つける必要があります。

私は次のようにこのスタッフのIDを確立するために以下を使用しました。

    SELECT TOP(1) JA.judgeID, COUNT(JA.judgeId) AS COUNT
    FROM recJudgeAssignment AS JA
    LEFT JOIN recEntrantStatus AS ES
    ON JA.bandId = ES.entrantId
    GROUP BY JA.judgeId, ES.roundId
    HAVING ES.roundId = @round
    ORDER BY COUNT

しかし、次のステートメントで使用するローカル変数としてこれをキャッチする必要があります。

    UPDATE recJudgeAssignment
    SET judgeId = @judge
    WHERE roundId = @round
    AND bandId = @entrantId

最初の選択でjudgeIdをキャッチするにはどうすればよいですか?通常、私は次のようなことをします。

    SELECT @judge =(SELECT TOP(1) JA.judgeID, COUNT(JA.judgeId) AS COUNT
    FROM recJudgeAssignment AS JA
    LEFT JOIN recEntrantStatus AS ES
    ON JA.bandId = ES.entrantId
    GROUP BY JA.judgeId, ES.roundId
    HAVING ES.roundId = @round
    ORDER BY COUNT)

selectがjudgeIdとCOUNTを返すため、これはもちろん機能しません。最初の選択の結果をWebページに送り返してから、別のweb>dbトランザクションで後続の更新ステートメントを実行する必要はありません。

だから...誰もが提供できる助けや救済さえも、大いにありがたいです。

前もって感謝します!

4

3 に答える 3

3
-- Query the DB for your variables
-- (I have also moved the HAVING clause to a WHERE clause.)
------------------------------------------------------------
SELECT TOP(1)
  @judgeID = JA.judgeID,
  @count   = COUNT(JA.judgeId)
FROM
  recJudgeAssignment AS JA
LEFT JOIN
  recEntrantStatus AS ES
    ON JA.bandId = ES.entrantId
WHERE
  ES.roundId = @round
GROUP BY
  JA.judgeId, ES.roundId
ORDER BY
  COUNT

-- Update the DB
------------------------------------------------------------
UPDATE
  recJudgeAssignment
SET
  judgeId = @judgeID
WHERE
      roundId = @round
  AND bandId  = @entrantId

-- Return the variables to the client
------------------------------------------------------------
SELECT
  @judgeID     AS judgeID,
  @count       AS count
于 2012-09-24T13:53:00.593 に答える
2
SELECT top(1) @judge = JA.judgeID, @count_j =COUNT(JA.judgeId)
    FROM recJudgeAssignment AS JA
    LEFT JOIN recEntrantStatus AS ES
    ON JA.bandId = ES.entrantId
    GROUP BY JA.judgeId, ES.roundId
    HAVING ES.roundId = @round
    ORDER BY COUNT
于 2012-09-24T13:51:13.283 に答える
1

最初のクエリを見て
くださいこれを試してください

SELECT TOP(1) JA.judgeID
FROM recJudgeAssignment AS JA
LEFT JOIN recEntrantStatus AS ES
 ON   JA.bandId = ES.entrantId 
 AND  ES.roundId = @round   
GROUP BY JA.judgeId, ES.roundId
ORDER BY COUNT(JA.judgeId)
于 2012-09-24T14:07:29.037 に答える