Select FileUpload.FileName AS FINAME, FileUpload.FilePath,MemberPersonalInformation.FirstName As SharedBy from FileUpload
INNER JOIN
ContentManagement ON ContentManagement.FileId=FileUpload.FileId
INNER JOIN
MemberPersonalInformation ON MemberPersonalInformation.MemberId=ContentManagement.CreatedBy
INNER JOIN
SubjectMaster ON ContentToIndividual.SubjectId=SubjectMaster.SubjectId
where
FileUpload.FileId in
(Select FileId from ContentManagement where ContentId in
(Select ContentId from ContentToIndividual where ShowToMemberId=12)
AND ContentManagement.ContentTypeId=1 and ContentManagement.SessionId=4)
当我执行此查询时,在上一次JOIN中收到错误 The multi-part identifier "ContentToIndividual.SubjectId" could not be bound.
但我在两个表中都有SubjectId。我无法理解这是什么问题。请帮帮我进行。
答案 0 :(得分:4)
您正在将SubjectMaster
表加入到之前未引用的ContentToIndividual
表中。
您需要加入contentToIndvidual
才能在SubjectMaster
加入中引用它。
e.g。
Select FileUpload.FileName AS FINAME,
FileUpload.FilePath,MemberPersonalInformation.FirstName As SharedBy
from FileUpload
INNER JOIN
ContentManagement ON ContentManagement.FileId=FileUpload.FileId
INNER JOIN
MemberPersonalInformation ON MemberPersonalInformation.MemberId=ContentManagement.CreatedBy
-- You need to add it in here
Inner Join ContentToIndividual on SomeColumn = AnotherColumn
INNER JOIN
SubjectMaster ON ContentToIndividual.SubjectId=SubjectMaster.SubjectId
where
FileUpload.FileId in
(Select FileId from ContentManagement where ContentId in
(Select ContentId from ContentToIndividual where ShowToMemberId=12)
AND ContentManagement.ContentTypeId=1 and ContentManagement.SessionId=4)
注意:即使您在子查询中查询ContentToIndividual
,如果它不是主要选择查询的一部分,也无法引用该列。
答案 1 :(得分:3)
您尚未在主要选择语句中加入ContentToIndividual。您需要添加它或不参考它。
编辑:只是要添加,您实际上不需要在主选择中添加SubjectMaster
或ContentToIndividual
联接,因为您没有从任何一个表中选择任何列 - 请记住子查询与主查询分开;你只是用它来获取FileIds列表。也可以优化声明的其余部分。
Select FileUpload.FileName AS FINAME, FileUpload.FilePath,MemberPersonalInformation.FirstName As SharedBy from FileUpload
INNER JOIN
ContentManagement ON ContentManagement.FileId=FileUpload.FileId
INNER JOIN
MemberPersonalInformation ON MemberPersonalInformation.MemberId=ContentManagement.CreatedBy
where
FileUpload.FileId in
(Select FileId from ContentManagement where ContentId in
(Select ContentId from ContentToIndividual where ShowToMemberId=12)
AND ContentManagement.ContentTypeId=1 and ContentManagement.SessionId=4)
编辑2:为了好玩,我认为这可以简化一些事情,因为它摆脱了子查询,所以它应该更快......
SELECT FileUpload.FileName AS FINAME, FileUpload.FilePath,MemberPersonalInformation.FirstName As SharedBy
FROM FileUpload
INNER JOIN ContentManagement ON ContentManagement.FileId=FileUpload.FileId
AND ContentManagement.ContentTypeId=1
AND ContentManagement.SessionId=4
INNER JOIN ContentToIndividual ON ContentToIndividual.ContentId = ContentManagement.ContentId -- Iguessed at this join
AND ContentToIndividual.ShowToMemberId=12
INNER JOIN MemberPersonalInformation ON MemberPersonalInformation.MemberId = ContentManagement.CreatedBy