私は何日もこれをいじっています。マネージャー、マネージャーが割り当てられているサイト、およびそれらのサイトに割り当てられている栽培者のテーブルがあります。マネージャーが何人の栽培者を持っているかを知る必要があります。マネージャーはサイトに割り当てられていますが、栽培者には割り当てられていないため、このドリルを実行して、特定のマネージャーが持つ個々のサイトに割り当てられた栽培者に基づいて、何人の栽培者がいるかを調べる必要があります。サイトには栽培者が 1 人しかいません。特定のマネージャーの栽培者の数をかなり簡単に取得できますが、各マネージャーの栽培者の数を含む単一のテーブルを返したいのですが、困惑しています。
次のコードがあります。
DECLARE @ManagerID INT
DECLARE @getManagerID CURSOR
SET @getManagerID = CURSOR FOR
SELECT ID
FROM Managers
OPEN @getManagerID
FETCH NEXT
FROM @getManagerID INTO @ManagerID
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT COUNT(Grower) AS NumGrowers
FROM Growers
WHERE Growers.ID IN
(
SELECT sitesg.Grower
FROM SitesG
WHERE SitesG.id IN
(
SELECT SITE
FROM ManagerSites
WHERE ManagerSites.Manager IN
(
SELECT ID
FROM Managers
WHERE ID = @ManagerID
)
)
)
FETCH NEXT
FROM @getManagerID INTO @ManagerID
END
CLOSE @getManagerID
DEALLOCATE @getManagerID
これにより、おそらく一時テーブルに保存できる一連の結果が得られますが、もっと良い方法があるはずです。何か案は?
-ジョー