我正在尝试创建一个单独的表来跟踪已读/未读帖子。使用MySQLi
我将有两个表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_tracking
表中为所有用户和列read = 0
创建行。问题是,我不知道如何解决这个问题,因为我在items_tracking
中使用的外键仍然很不确定。
关于如何在两个表中同时插入插入的任何想法,而第二个表引用第一个?
答案 0 :(得分: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
中有记录。