施設、従業員、完了したユニット、プロジェクト、およびシフトを格納する 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 ステートメントは無効です。しかし、それは私が達成したいことを示しています。また、ステートメントで施設ラベルを選択したいと思います。どうすればこれにアプローチできますか?
あなたが提供できる洞察を前もって感謝します!