0

既読/未読の投稿を追跡する別のテーブルを作成しようとしています。Iを使用MySQLiすると、2つのテーブルitemsとがありitems_trackingます。ページがレンダリングされると、テーブルが結合され、ユーザーが投稿を読んだかどうかが確認されます。

items
+-------+------------+----+
|  id   | created_by | .. |
+-------+------------+----+
| item1 | id12       | .. |
| item2 | id433      | .. |
+-------+------------+----+

items_tracking
+---------+---------+------+
| user_id | item_id | read |
+---------+---------+------+
| id1     | item1   |    0 |
| id2     | item2   |    0 |
| id94    | item1   |    1 |
+---------+---------+------+

ここでのアイデアは、テーブルに新しいアイテム/投稿が作成されるたびに、すべてのユーザーitemsのテーブルに列を持つ行も作成するというものでした。問題は、私が使用する外部キーがまだほとんど決定されていないため、これを回避する方法がわからないことです。items_trackingread = 0items_tracking

2番目のテーブルが最初のテーブルを参照しているときに、両方のテーブルに同時に挿入する方法についてのアイデアはありますか?

4

1 に答える 1

1

追跡テーブルにread=0のレコードは必要ありません。

SELECT ..., t.read FROM items i LEFT JOIN items_tracking t ON (t.item_id = i.id)

items_trackingこのクエリは、対応するレコードが;にない場合でも機能します。この場合、結果のt.readはになりますNULL。でレコードを挿入するだけで済みread = 1ます。このフラグも必要ありませんt.item_id IS NOT NULLが、にレコードがあるかどうかをテストしますitems_tracking

于 2012-05-26T18:54:53.390 に答える