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 + "'"
精彩评论