Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何链接SQL数据库条目?_Sql_Database_Sqlite_Sql Update - Fatal编程技术网

如何链接SQL数据库条目?

如何链接SQL数据库条目?,sql,database,sqlite,sql-update,Sql,Database,Sqlite,Sql Update,我有一个包含注释的SQLite数据库,其中包含列_id、title、details和listid _id是自动递增的主键 标题和详细信息是字符串数据字段 listid是指向另一个表中列表名的外键 我想找到一种方法,使多个列表中的注释或注释以这样的方式链接,即更新一个将更新另一个或通过其他方式同时编辑 总体目标是在多个列表中包含同一注释的副本,您可以在其中编辑一个,其余的将自动更新 我曾考虑过添加一个额外的列,其中包含一种链接id,所有链接笔记都将共享该id,从而创建一种更新其他笔记的方法。一个笔

我有一个包含注释的SQLite数据库,其中包含列_id、title、details和listid

_id是自动递增的主键 标题和详细信息是字符串数据字段 listid是指向另一个表中列表名的外键

我想找到一种方法,使多个列表中的注释或注释以这样的方式链接,即更新一个将更新另一个或通过其他方式同时编辑

总体目标是在多个列表中包含同一注释的副本,您可以在其中编辑一个,其余的将自动更新


我曾考虑过添加一个额外的列,其中包含一种链接id,所有链接笔记都将共享该id,从而创建一种更新其他笔记的方法。

一个笔记可以有多个列表,一个列表可以有多个笔记


您需要一个具有注释id和列表id的关联表,SQLite 3.6.19+本机支持并强制外键,请参阅。

有三个表:

NOTE: _id, title, details

LIST: _id, listname

NOTES_IN_LIST: note_id, list_id
然后,无论何时向列表中添加注释,都会向注释列表中的注释添加新行,该行将该注释的注释id连接到列表的列表id

无论何时编辑注释,都只需在注释表中进行编辑

每当您列出您有id的列表内容时,您都要进行如下选择:

SELECT title, details
from NOTE
where NOTE._id in (
    SELECT note_id from NOTES_IN_LIST
    where list_id=<your list id>
)

嗯,要将旧音符转换为新结构,我会:

使用新的自动增量id字段创建新的notes表 然后选择distinct note title,将详细信息记录到新的notes表中 然后在old_title=new_title和old_detail=new_detail上将旧注释表连接到新注释表,然后从中选择新注释id和旧列表id,然后将结果表插入到notes_IN_列表表中 然后我想你可以删除旧的notes表 确保没有人在发生这种情况时编辑或添加注释,否则您将丢失注释


此外,您还需要更新UI以进入新的注释表,将注释放入列表中,而不是通过复制,而是通过在注释列表中插入新行等方式。

请您解释得更清楚一点好吗?外键不支持将两个以上的注释链接在一起。不幸的是,这可能很难实现,因为我有一个数据库,假设每个注释层次结构有一个列表。如果要对关联表布局进行此更改,我不确定是否可以安全保存用户的数据。如何使用SQL编辑现有数据库以匹配此格式?现在在我的答案中添加了对此的一般说明。
SELECT title, details
from NOTE, NOTES_IN_LIST
where
    NOTE._id=NOTES_IN_LIST.note_id
    and
    NOTES_IN_LIST.list_id=<your list id>