使用Access在一行中打印多个记录

时间:2011-03-17 09:54:31

标签: ms-access

自从我使用数据库已经好几年了,我感到很难过。这通常是最容易受伤的东西,我希望有人可以提供帮助。

我有一张学生姓名表。我有一个父母姓名表(母亲和父亲)。我有另一个表定义他们作为母亲和父亲的关系,另外还有另一个表定义跟踪所有主键及其关系的表。我已经达到了我记得如何加入的程度,但一次只能加入一条记录。目前我在Access 2010中有一个查询,它打印两行,如下所示:

Student1 Name | Parent1 Name | Parent1 Cell  
Student1 Name | Parent2 Name | Parent2 Cell
Student2 Name | Parent1 Name | Parent1 Cell  
etc...

我想完成以下任务:

Student1 Name | Parent1 Name | Parent2 Name | Parent1 Cell | Parent2 Cell  
Student2 Name | Parent1 Name | Parent2 Name | Parent1 Cell | Parent2 Cell  
etc...

我的SQL语句如下:

SELECT Student.FirstName, StudentToPersonMap.RelationshipType, Person.FirstName, 
Person.CellPhone, FROM Student INNER JOIN (Person INNER JOIN StudentToPersonMap ON 
Person.PersonID = StudentToPersonMap.PersonID) ON Student.StudentID = 
StudentToPersonMap.StudentID WHERE (((StudentToPersonMap.RelationshipType)=1 Or 
(StudentToPersonMap.RelationshipType)=2));

欢迎通过Access查询或SQL查询提出任何建议!谢谢你的阅读!

1 个答案:

答案 0 :(得分:0)

您可以使用子查询。以下是基于SQL Server的另一个系统的示例,但您可以在应用程序中使用相同的理论

SELECT tblProcedures.Procedure_ID,
        Procedure_name,
        tReviewer_1.Proc_reviewer_name,
        tReviewer_2.Proc_reviewer_name
FROM tblProcedures
INNER JOIN (select Procedure_ID, Proc_reviewer_name 
                from tblProc_reviewers 
                    INNER JOIN tblProc_reviews_req 
                        ON tblProc_reviews_req.Proc_reviewer_ID=tblProc_reviewers.Proc_reviewer_ID
                    WHERE tblProc_reviewers.Proc_reviewer_ID=1) as tReviewer_1
ON tReviewer_1.Procedure_ID=tblProcedures.Procedure_ID

INNER JOIN (select Procedure_ID, Proc_reviewer_name 
                from tblProc_reviewers 
                    INNER JOIN tblProc_reviews_req 
                        ON tblProc_reviews_req.Proc_reviewer_ID=tblProc_reviewers.Proc_reviewer_ID
                    WHERE tblProc_reviewers.Proc_reviewer_ID=2) as tReviewer_2
ON tReviewer_1.Procedure_ID=tblProcedures.Procedure_ID

在访问权限中,你可能最好做两个名为qryStudent_mothers_details的查询和一个名为qryStudent_fathers_details的查询。

然后你可以将它们加入你的学生桌并从那里开始。