Item と Inspection という 2 つのデータベース テーブルがあります。Item には多くの検査があります。基本的に、検査はアイテムに対して行われ、検査は「壊れていない」対「壊れている」という状態を記録します。各項目について定期的な検査が行われます。
「last_broken_at」という Items テーブルの各レコードに新しく追加されたフィールドを更新したいと考えています。検査の「ステータス」フィールドが「壊れた」に等しい、そのアイテムの最も古い関連する検査で見つかった「作成された」日時に更新する必要があります。
これは、単一の MySQL update ステートメントを介して確実に可能ですが、注意点があります。
ある時点でアイテムが修理され、検査でアイテムが「壊れていない」ことが判明したが、後で再び「壊れている」ことが判明した場合、アイテムの「last_broken_at」フィールドを検査の「作成された」日時に更新する必要があります。ステータス「壊れていない」の検査後、ステータスが「壊れた」であった場合。
基本的に、Items テーブルの「last_broken_at」フィールドはその名前に忠実である必要があり、実際には、Item が「壊れていない」から「壊れた」に変わったことを知る最も近い時間でなければなりません。
テーブルは次のようになります。
品目表
- ID (INT)
- 作成されました (DATETIME)
- 名前 (VARCHAR)
- status (VARCHAR) 注: 最後の検査による、アイテムの最新のステータスが含まれます。
- last_broken_at (DATETIME)
検査
- ID (整数)
- 作成されました (DATETIME)
- item_status (VARCHAR)
- item_id (整数)
ありがとう!!