我有一个查询(qryClassInstructor),它显示了在给定学术课程中教授的课程及其教师:
SELECT tblClasses.ClassID,tblClasses.SubjAreaID, tblClasses.CourseID,tblClasses.AcadTerm, tblInstructors.InstructorID FROM tblInstructors RIGHT JOIN(tblClasses LEFT JOIN tblClassInstructor ON tblClasses.ClassID = tblClassInstructor.ClassID) ON tblInstructors.InstructorID = tblClassInstructor.InstructorID;
因为某些类有多个教师,所以此查询返回给定类的多行,每个行显示一个教师。
1,MATH,100,2015SP,Smith,J。
1,MATH,100,2015SP, 三月,A。
我想创建一个连接这些教师的字段,因此我使用Allen Browne的ConcatRelated功能。这是我使用的SQL:
SELECT qryClassInstructor.CourseID,qryClassInstructor.AcadTerm, ConcatRelated(" InstructorID"," qryClassInstructor"," ClassID ="& [的ClassID]" CourseID"&#34 ;; ")AS [讲师] FROM qryClassInstructor;
这通常有效(连接发生),但我仍然为任何有多个教师的课程获得多行。
1,MATH,100,2015SP,Smith,J。;三月,A。
1,MATH,100,2015SP,Smith,J。;三月,A。
我会说实话,我真的不理解函数的WHERE参数部分(VBA新手),所以如果这是我的问题,我会很乐意帮助。
我理解其他人也已经询问过这个函数,但是我还没有看到WHERE参数解释得很好并希望能够深入了解它。另外,我们的InstructorID字段使用逗号和句点是否存在问题(例如," Smith,J。")?在此先感谢您的帮助!
答案 0 :(得分:0)
运行它,它应该消除欺骗:
SELECT DISTINCT qryClassInstructor.CourseID,qryClassInstructor.AcadTerm,ConcatRelated(“InstructorID”,“qryClassInstructor”,“ClassID =”& [ClassID],“CourseID”,“;”)AS [Instructor(s)] FROM qryClassInstructor ;
DISTINCT 操作符强制Access根据 SELECT 语句中选择的字段消除欺骗。