0

こんにちは、私は SQL サーバー データベースを持っています。次のクエリを実行すると、4 つの結果が得られます。

WITH MyCTE (ID, hasLead, SubgroupFk, SubTeamFk)
AS (
SELECT [ID],[hasLead],[SubgroupFk],[SubTeamFk]
FROM [LocalGTPDatabase].[dbo].[LinkProject-Area]
where [ProjectFk]=90
)
SELECT 
*
FROM MyCTE 
INNER JOIN EmplTeam ON EmplTeam.ID = MyCTE.SubTeamFk 
INNER JOIN [Department] ON [Department].ID = MyCTE.SubgroupFk

すべての LinkProjectArea Id に対して、1 人員アイテム/年
があります。

したがって、人数を次のクエリと組み合わせることができると考えました。

WITH MyCTE (ID, hasLead, SubgroupFk, SubTeamFk)
AS (
SELECT [ID],[hasLead],[SubgroupFk],[SubTeamFk]
FROM [LocalGTPDatabase].[dbo].[LinkProject-Area]
where [ProjectFk]=90
)
SELECT 
*
FROM MyCTE 
INNER JOIN EmplTeam ON EmplTeam.ID = MyCTE.SubTeamFk 
INNER JOIN [Department] ON [Department].ID = MyCTE.SubgroupFk 
INNER JOIN [HeadCount] ON [HeadCount].LinkProjectAreaFk = MyCTE.ID

しかし、このクエリを実行しても結果は得られませんが、このクエリのすべての ID には人数が含まれています。私は何を間違っていますか?
私は本当に手がかりがありません

4

3 に答える 3

0

あなたは間違った列に参加しています!

HeadCount テーブルの ID 列も使用する必要があります。

INNER JOIN [HeadCount] ON [HeadCount].ID = MyCTE.ID 

この回答はあなたのコメントに基づいています:

ID =97 またはID =98 またはID =99 またはID =100の HC から * を選択してください4 つの結果が得られます

于 2012-09-18T08:35:24.187 に答える
0

次のクエリを実行して、それらの ID に FK 参照が存在するかどうかを確認します。

SELECT *
FROM HeadCount
WHERE HeadCount.LinkProjectAreaFk IN
(SELECT [ID]
FROM [LinkProject-Area]
where [ProjectFk]=90)

返すものが何もない場合は、それらの ID が HeadCount の外部キーとして存在しないことを意味します。

于 2012-09-18T08:35:45.343 に答える
0

エラーが発生せず、データがまったくない場合は、おそらくデータがありません。「HeadCount」項目がある場合、Department-Item が存在しないか、適合する Empl-Team-Item が存在しない可能性があります。

基本的に、and-接続があります。MyCTE、EmplTeam、Department、および HeadCount のすべての組み合わせを表示します。ここで、3 つの「オン条件」がすべて有効です。

于 2012-09-18T08:36:03.007 に答える