您好我有一个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个人数/年 人员表与以下连接: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都有一个人数。我做错了什么?
我真的没有头绪
答案 0 :(得分:0)
你正在加入错误的专栏!
您还需要使用HeadCount表上的ID列:
INNER JOIN [HeadCount] ON [HeadCount].ID = MyCTE.ID
此答案基于您的评论:
从HC中选择*,其中 ID = 97或 ID = 98或 ID = 99或 ID = 100我得到4个结果
答案 1 :(得分:0)
运行以下查询以确定这些ID上是否存在FK引用:
SELECT *
FROM HeadCount
WHERE HeadCount.LinkProjectAreaFk IN
(SELECT [ID]
FROM [LinkProject-Area]
where [ProjectFk]=90)
如果它没有任何回报,则意味着这些ID不会作为HeadCount中的Forign Key存在
答案 2 :(得分:0)
如果没有错误但没有数据,则可能没有数据。 也许如果有一个“HeadCount”项目,则没有Department-Item或者没有适合的Empl-Team-Item。
基本上你有一个和 - 连接。显示MyCTE,EmplTeam,Department和HeadCount的所有组合,其中所有三个“开启条件”均有效。