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 个 Headcount 项目/年
Headcount 表连接到:LinkProjectAreaFk 到前面提到的表

所以我想我可以将人数与以下查询结合起来:

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 

此答案基于您的评论:

Select * from HC where ID =97 or ID =98 or ID =99 or ID =100 我确实得到 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”项目,就没有适合的部门项目或 Empl 团队项目。

基本上你有一个and-Connection。显示 MyCTE、EmplTeam、Department 和 HeadCount 的所有组合,其中您的三个“ON-Conditions”都有效。

于 2012-09-18T08:36:03.007 回答