子查询中的多个值
我想概括一下底部的查询,以便获得所有项目和附加项目信息,其中我的子组具有特定的值,但无法使其工作,因为我无法获取[ projectFk]子查询中的多个值
SELECT
[HeadCount].[ID],
[LinkProjectAreaFk],
[Month1],
[Month2],
[Month3],
[Month4],
[Month5],
[Month6],
[Month7],
[Month8],
[Month9],
[Month10],
[Month11],
[Month12],
[HcYear],
[ApproveDirFk],
[ApproveDirDate],
[FreezeFk],
[freezeDate],
[CDSID],[FreezeTypeFk],
[ApproveDirTypeFk],
[SourcesFk],
[Project].[Title],
[Project].[Title]
FROM
[HeadCount],
[Project]
WHERE
[HeadCount].[LinkProjectAreaFk]
IN
(SELECT
[ID]
FROM
[LinkProject-Area]
WHERE
[SubgroupFk]=1)
and
[Project].[ID]=[LinkProject-Area].[ProjectFk]
下面的查询工作,但只适用于一个项目如何我也从我的子查询得到projectFk,因为当我看着这件事,他们说这是不可能的,并与左外连接,我可以”吨得到它的工作在所有
SELECT
[HeadCount].[ID],
[LinkProjectAreaFk],
[Month1],
[Month2],
[Month3],
[Month4],
[Month5],
[Month6],
[Month7],
[Month8],
[Month9],
[Month10],
[Month11],
[Month12],
[HcYear],
[ApproveDirFk],
[ApproveDirDate],
[FreezeFk],
[freezeDate],
[CDSID],
[FreezeTypeFk],
[ApproveDirTypeFk],
[SourcesFk],
[Project].[Title],
[Project].[Title]
FROM
[HeadCount],
[Project]
WHERE
[HeadCount].[LinkProjectAreaFk] IN
(SELECT
[ID]
FROM
[LinkProject-Area]
WHERE
[ProjectFk]=90
and
[SubgroupFk]=1)
and
[Project].[ID]=90
希望你能帮助我或指出我在正确的方向
亲切的问候
您好我一直试图用自己的方式,但它仍然不会理所应当: I'me越来越多部分标识符“MyCTE.ProjectFK”可能不受约束。和 无法绑定多部分标识符“MyCTE.ID”。当我查看这个错误时有什么错误与使用我的连接错误任何想法有关?
;WITH MyCTE (ID, ProjectFK)
AS
(
SELECT
ID,
ProjectFk
FROM
[LinkProject-Area]
WHERE
SubgroupFk = 1
)
SELECT
*
FROM
[LinkProject-Area]
INNER JOIN
HeadCount ON [LinkProjectAreaFk] = MyCTE.ID
INNER JOIN
Project ON Project.ID = MyCTE.ProjectFK
我想你会想组织这次查询作为这样的事:
SELECT ...
FROM
(
SELECT ID, ProjectFk
FROM [LinkProject-Area]
WHERE SubgroupFk = 1
) LinkProjectAreas
INNER JOIN HeadCount ON LinkProjectAreaFK = LinkProjectAreas.ID
INNER JOIN Project ON Project.ID = LinkProjectAreas.ProjectFK
你也可以用公用表表达式(CTE)组织本:
;WITH LinkProjectAreas (ID, ProjectFK) AS
(
SELECT ID, ProjectFk
FROM [LinkProject-Area]
WHERE SubgroupFk = 1
)
SELECT ...
FROM LinkProjectAreas
INNER JOIN HeadCount ON LinkProjectAreaFK = LinkProjectAreas.ID
INNER JOIN Project ON Project.ID = LinkProjectAreas.ProjectFK
非常感谢您的回复,目前我正在努力使您的解决方案能够正常工作,但它给我提供了[LinkProjectAreaFk]上的错误,因为无效的列名或标识符无法被绑定......但真的非常感谢 – Jelle 2012-07-11 08:52:02
嗨,我一直在尝试你的方式,但它仍然没有像它应该那样:我要获得多部分标识符“MyCTE.ProjectFK”不能被绑定。并且多部分标识符“MyCTE.ID”不能被绑定。当我查看这个错误时有什么错误与使用我的连接错误任何想法有关? ; WITH MyCTE(ID,ProjectFK)AS(SELECT ID,ProjectFk FROM [LinkProject-Area] Where SubgroupFk = 1)SELECT * FROM [LinkProject-Area] INNER JOIN HeadCount ON [LinkProjectAreaFk] = MyCTE.ID INNER JOIN Project ON Project。 ID = MyCTE.ProjectFK – Jelle 2012-07-11 11:40:45
您必须选择数据从CTE然后INNER JOIN到其他表。 – 2012-07-11 14:19:34
如果您将查询简化为显示问题所需的最低限度,将其格式化以使其更易于阅读(除非需要,请移除括号),提供样本数据以及期望的结果哟你的SQL Server版本。 – Pondlife 2012-07-10 21:29:18