如何在sqlite中关联两个表?

发布于 2022-09-12 03:14:07 字数 350 浏览 18 评论 0

比如有note和tag两表:

CREATE TABLE note (
    note_id   TEXT PRIMARY KEY,
    note_text TEXT
);

CREATE TABLE tag (
    tag_id   TEXT PRIMARY KEY,
    tag_text TEXT
);

现在需要满足至少以下几个功能:

1)每个note可以有多个tag
2)每个tag可以关联多个note
总体上就像笔记应用中的标签功能,笔记可以设置标签,通过标签也可以搜索笔记。

这样的功能在一般的开发过程中怎样实现?如何写sql语句?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

赤濁 2022-09-19 03:14:07

note和tag多对多关系
加个note_tags表, 列是 note_id, tag_id
查询的时候通过 note_tags这个中间表做关联

demo

notes table

id    integer    NO    NULL    
note_text    text    YES    NULL    
created_at    datetime(6)    NO    NULL    
updated_at    datetime(6)    NO    NULL    

tags

id    integer    NO    NULL    
tag_text    varchar    YES    NULL    
created_at    datetime(6)    NO    NULL    
updated_at    datetime(6)    NO    NULL    

note_tags

id    integer    NO    NULL    
tag_id    integer    YES    NULL    
note_id    integer    YES    NULL    
created_at    datetime(6)    NO    NULL    
updated_at    datetime(6)    NO    NULL    

查询note id 是1的所有tags

SELECT "tags".* FROM "tags" INNER JOIN "note_tags" ON "tags"."id" = "note_tags"."tag_id" WHERE "note_tags"."note_id" = 1

查询tag id 是1的所有notes

SELECT "notes".* FROM "notes" INNER JOIN "note_tags" ON "notes"."id" = "note_tags"."note_id" WHERE "note_tags"."tag_id" = 1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文