开发者

SQL Error multi-part identifier

CAn someone help me fix this SQL statement? I am trying to retrieve story, creation date from the story table and the company role from the member table, but am getting an error:

The multi-part identifier "s.ProjectIterationMemberID" could not be bound. The multi-part identifier "s.StoryID" could not be bound.

SELECT s.Story, s.CreationDate, m.CompanyRole FROM Story s, Member m INNER JOIN    
ProjectIterationMember pim On m.开发者_如何学运维MemberID = pim.MemberID AND 
pim.ProjectIterationMemberID = s.ProjectIterationMemberID INNER JOIN 
ProjectStoryFactors psf On s.StoryID = psf.StoryID JOIN AgileFactors af ON 
psf.AgileFactorID = af.AgileFactorID WHERE StoryCategoryID = 1 AND af.Name = '" + tag + "'"

my table structure is as follows:

Member {MemberID (PK), CompanyRole}

ProjectIterationMember {ProjectIterationMemberID (PK), MemberID (FK)}

Story {StoryID (PK), ProjectIterationMemberID, StoryCategoryID, Story, CreationDate}

ProjectStoryFactors {ProjectStoryFactorID (PK), StoryID, AgileFactorID}

AgileFactors {AgileFactorID (PK), Name}


You broke the ANSI join chain with a comma between story and member

SELECT s.Story, s.CreationDate, m.CompanyRole
FROM Story s
INNER JOIN ProjectIterationMember pim
 On pim.ProjectIterationMemberID = s.ProjectIterationMemberID
INNER JOIN Member m
 ON m.MemberID = pim.MemberID
INNER JOIN ProjectStoryFactors psf
 On s.StoryID = psf.StoryID
JOIN AgileFactors af
 ON psf.AgileFactorID = af.AgileFactorID
WHERE StoryCategoryID = 1 AND af.Name = '" + tag + "'"

This is your query broken into blocks. Mixing ANSI and non-ANSI in the FROM clause makes things tricky.


SELECT s.Story, s.CreationDate, m.CompanyRole FROM

Story s

, -- the little comma

Member m INNER JOIN
ProjectIterationMember pim On m.MemberID = pim.MemberID AND pim.ProjectIterationMemberID = s.ProjectIterationMemberID INNER JOIN ProjectStoryFactors psf On s.StoryID = psf.StoryID JOIN AgileFactors af ON psf.AgileFactorID = af.AgileFactorID

WHERE StoryCategoryID = 1 AND af.Name = '" + tag + "'"


The alias "s" is defined in the first comma portion, it cannot be "seen" from the 2nd part.


SELECT 
   s.Story, 
   s.CreationDate,
   m.CompanyRole
FROM
   Story s
INNER JOIN ProjectiterationMember pm 
ON
   pm.ProjectIterationMemberID = s.ProjectIterationMemberID
INNER JOIN Member m
ON
   m.MemberID = pm.MemberID
INNER JOIN ProjectStoryFactors psf 
ON 
   psf.StoryID = s.StoryID
INNER JOIN AgileFactors af
ON  
   af.AgileFactorID=psf.AgileFactorID
WHERE
   s.StoreCategoryID = 1 AND af.Name  = '" + tag + "'"     
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜