我正在尝试创建一个单独的表来跟踪已读/未读的帖子。使用 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
表中为所有用户创建行并包含列读取= 0
。问题是,我不知道如何解决这个问题,因为我在 items_tracking
中使用的外键仍然几乎未确定。
关于如何在第二个表引用第一个表时同时插入两个表,有什么想法吗?
最佳答案
您不需要跟踪表中 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
中的一条记录。
关于mysql - 插入后更新已读/未读表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10768879/