3

次の MS アクセス (2010) データベースがあります。

データベース図

Employee、Period、および Operation テーブルが入力され、UnitOfWork テーブルは空白です。

基本的に、複数の労働者(従業員)によっていくつかのアイテムが生産されています。各アイテムには複数の操作が必要です (各ワーカーは、任意のアイテムの任意の操作を何度でも行うことができます。すべての操作にはいくらかのコストがかかり、すべての従業員が「今月」にどれだけ稼いだか、計画を達成したかなどのレポートを生成する必要があります.

以下を確認するために SELECT を実行したいと思います: UnitOfWorks、Employee、Period、Operation の利用可能なすべての組み合わせ。

つまり、Employee、Period、Operation のすべての可能な組み合わせを SELECT し、その結果に LEFT JOIN UnitOfWork を追加したいので、すべての UnitOfWork に OperationsDone を入力できます。WHERE 句と ORDER 以降を追加します

CROSS JOIN が役立つと思いました (MS Access では、コンマを使用した単なる列挙です)、次のようになります。

SELECT * FROM (Employee, Period, Operation)
LEFT JOIN UnitOfWork on UnitOfWork.OperationId=Operation.OperationId

しかし、このクエリを実行すると、「JOIN 操作で構文エラーが発生しました」というエラーが表示されます。

私もこのように試しました:

SELECT * FROM Employee AS e LEFT JOIN
(Period AS p LEFT JOIN UnitOfWork AS uow ON p.PeriodId=uow.PeriodId)
on e.EmployeeId=uow.EmployeeId

これらは必要な 3 つの結合のうち 2 つだけですが、これで既に「JOIN 式はサポートされていません」というエラーが表示されます。

データベース設計の提案も大歓迎です。これは私が設計している新しいデータベースであり、私は SQL の初心者です。

前もって感謝します!

更新: 私も考えています。おそらく、サブクエリを試してみるべきですか? 1 つのクエリで CROSS 結合 (操作、従業員、および期間) を実行し、UnitOfWork をクエリ結果に LEFT 結合するように...しかし、「複数のフィールドで」JOIN を実行するにはどうすればよいですか? また、アクセスにサブクエリを実装するにはどうすればよいですか?

4

1 に答える 1

1

このようにしてみてください:

SELECT * FROM (Employee AS e LEFT JOIN UnitOfWork AS uow ON e.EmployeeId=uow.EmployeeId)
              LEFT JOIN Period AS p on p.PeriodId=uow.PeriodId
于 2012-05-09T08:55:37.250 に答える