(私が思うに) 複雑なクエリを書くのに苦労しています。サイト上のすべてのアクティブなレコーディングを保持するレコーディング テーブルがあります。「削除のマーク」が付けられる前に、指定された X 週間記録を保持したいと考えています。また、特定の「recs_bus_id」またはビジネスの X 数の録音のみを保存したいと考えています。各ビジネスは、削除のマークが付けられる前に、アカウントに対して X 件の録音しか許可されておらず、recs_mark_deletion_time のタイムスタンプも更新されます。
これが私の問題です。非常に多くのクエリを実行せずにこれを行う方法がわかりません
録音
recs_id | recs_insert_time | recs_title | recs_bus_id | recs_mark_deletion_time | recs_mark_deletion
ビジネス
bus_id | bus_rec_save_weeks | bus_max_rec_save_count
- bus_max_rec_save_count は、ビジネスが保存できる録音の総数です
現在、録音に削除のマークを付けるためにこれを行っています
SELECT * FROM recordings JOIN businesses ON Recording.recs_bus_id = Business.bus_id AND Recording.recs_insert_time < NOW() - INTERVAL Business.bus_rec_save_weeks WEEK
- 次に、結果セットをループして、削除のためにそれぞれマークを削除します
「bus_id」に基づいて、「bus_max_rec_save_count」の外側にあるレコードの結果セットを取得して削除のマークを付ける方法がわかりません。