Mysql 插入后更新已读/未读表
我正在尝试创建一个单独的表来跟踪已读/未读的帖子。使用Mysql 插入后更新已读/未读表,mysql,database,foreign-keys,Mysql,Database,Foreign Keys,我正在尝试创建一个单独的表来跟踪已读/未读的帖子。使用MySQLi我将有两个表items和items\u tracking。当呈现页面时,它将连接表并检查用户是否阅读文章 items +-------+------------+----+ | id | created_by | .. | +-------+------------+----+ | item1 | id12 | .. | | item2 | id433 | .. | +-------+---------
MySQLi
我将有两个表items
和items\u 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
表中创建新的item/post时,它也会在items\u tracking
表中为所有用户创建列read=0
。问题是,我不知道如何解决这个问题,因为我在items\u 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\u id不为NULL
以查看在items\u tracking
Gah中是否有记录,您是对的!我沉浸在这个问题中,想不出这么简单的解决办法。但是,如果您只想列出未读的项目呢。如何仅选择/显示在items\u tracking
表中不存在对应项的项目?我想我可以通过在items
表上执行SELECT
来解决这个问题,然后对每个项目执行另一个SELECT
来找出items\u tracking
表中是否存在一行,如果不存在,我甚至不会渲染它。正确吗?选择。。。“从项目”中,我将“连接项目”跟踪t打开(t.item\u id=i.id),其中t.item\u id为空