0

レポートを作成するために複数のテーブルを結合しようとしています。このレポートには、コース、コースに加えられた改訂、および誰が改訂を要求、作成、および承認したかが一覧表示されます。

要求中、承認済み、値は従業員番号です。上記の内部結合されたテーブルを Employee テーブルと結合しようとしているので、改訂を要求、作成、承認した名前 (従業員番号だけでなく) を一覧表示できます。

これは私が持っているもので、完全に間違っていることを知っています。

SELECT *
FROM Courses 
INNER JOIN CourseRevisions ON CourseRevisions.PELID = Courses.PELID
INNER JOIN CourseGroups ON CourseGroups.CourseGroupID = Courses.CourseGroupID
INNER JOIN [dbo].[OPG_Employees] ON OPG_Employees.EmployeeID = CourseRevisions.UpdatedBy
AND OPG_Employees.EmployeeID = CourseRevisions.ApprovedBy
AND OPG_Employees.EmployeeID = CourseRevisions.RequestedBy

これは、たまたま 3 つすべて (要求済み、承認済み、更新済み) に同じ従業員 ID がリストされている単一の結果のみを返します。

それぞれの個々の従業員のテーブル結果を取得できるようにするにはどうすればよいですか?

4

2 に答える 2

1

参照される従業員ごとに個別の結合が必要です。

SELECT *
FROM Courses INNER JOIN
     CourseRevisions
     ON CourseRevisions.PELID = Courses.PELID INNER JOIN
     CourseGroups
     ON CourseGroups.CourseGroupID = Courses.CourseGroupID INNER JOIN
     [dbo].[OPG_Employees] UpdateEmp 
     ON UpdateEmp.EmployeeID = CourseRevisions.UpdatedBy INNER JOIN
     [dbo].[OPG_Employees] ApprovedEmp
     on OPG_ApprovedEmp.EmployeeID = CourseRevisions.ApprovedBy INNER JOIN
     [dbo].[OPG_Employees] RequestedEmp
     on RequestedEmp.EmployeeID = CourseRevisions.RequestedBy

元の定式化では、3 つの ID がすべてまったく同じである必要がありました。

于 2012-06-26T18:42:40.030 に答える
1

OPG_Employees テーブルにフィールドごとに 1 回、つまり上記の例では 3 回参加する必要があります。UpdatedBy 用に 1 つの INNER JOIN、ApprovedBy 用に 1 つの INNER JOIN、RequestedBy 用に 1 つの INNER JOIN。

そのようなもの:

SELECT *
FROM Courses 
INNER JOIN CourseRevisions ON CourseRevisions.PELID = Courses.PELID
INNER JOIN CourseGroups ON CourseGroups.CourseGroupID = Courses.CourseGroupID
INNER JOIN [dbo].[OPG_Employees] empUpdatedBy ON empUpdatedBy.EmployeeID = CourseRevisions.UpdatedBy
INNER JOIN [dbo].[OPG_Employees] empApprovedBy ON empApprovedBy.EmployeeID = CourseRevisions.ApprovedBy
INNER JOIN [dbo].[OPG_Employees] empRequestedBy ON empRequestedBy.EmployeeID = CourseRevisions.RequestedBy
于 2012-06-26T18:40:53.263 に答える