1

施設、従業員、完了したユニット、プロジェクト、およびシフトを格納する 5 つのテーブルがあります。

施設がプロジェクトに何時間も記録されている場合、各施設でのプロジェクトの生産性 (完了の累積数と累積時間) を決定する必要があります。施設は従業員テーブルに格納されます。

これが私のテーブル構造です(この質問に必要なフィールドに縮小されています):

facilities
+------------+
| id         |
+------------+
| label      |
+------------+

employees
+------------+
| id         |
+------------+
| facility   |
+------------+

completes
+------------+
| id         |
+------------+
| project    |
+------------+
| completes  |
+------------+
| employee   |
+------------+

projects
+------------+
| id         |
+------------+
| title      |
+------------+

shifts
+------------+
| id         |
+------------+
| project    |
+------------+
| length     |
+------------+
| employee   |
+------------+

私が問題に直面しているのは、施設の生産性を選択することです。シフトや完了数ではなく、従業員に保存されている場合です。多分それは設計上の欠陥ですか?シフト テーブルと完了テーブルにも設備列が必要ですか? 従業員がすでに施設を決定している場合、施設の列を持つことは冗長に思えます。

SELECT p.title, SUM(c.completes), SUM(s.length)
FROM projects as p
LEFT JOIN completes as c ON c.project = p.id
LEFT JOIN shifts as s ON s.project = p.id
GROUP BY p.id, shifts.employee.facility;

もちろん、その GROUP BY ステートメントは無効です。しかし、それは私が達成したいことを示しています。また、ステートメントで施設ラベルを選択したいと思います。どうすればこれにアプローチできますか?

あなたが提供できる洞察を前もって感謝します!

4

1 に答える 1