需要帮助理解Allen Browne在MS Access中的Concat相关功能的WHERE参数

时间:2014-03-19 23:49:50

标签: sql vba ms-access concatenation

我有一个查询(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。")?在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

运行它,它应该消除欺骗:

  

SELECT DISTINCT qryClassInstructor.CourseID,qryClassInstructor.AcadTerm,ConcatRelated(“InstructorID”,“qryClassInstructor”,“ClassID =”& [ClassID],“CourseID”,“;”)AS [Instructor(s)] FROM qryClassInstructor ;

DISTINCT 操作符强制Access根据 SELECT 语句中选择的字段消除欺骗。