问答

如何在sqlite中关联两个表?

作者:admin 2021-07-18 我要评论

比如有note和tag两表: CREATE TABLE note ( note_id TEXT PRIMARY KEY, note_text TEXT);CREATE TABLE tag ( tag_id TEXT PRIMARY KEY, tag_text TEXT); 现在需...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

比如有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语句?

###

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

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 如何在sqlite中关联两个表?

    如何在sqlite中关联两个表?

  • squid 透明代理 https的几个问题

    squid 透明代理 https的几个问题

  • 求教关于js内存释放的问题。

    求教关于js内存释放的问题。

  • 读取mp3信息报错,使用的是jsmediatags

    读取mp3信息报错,使用的是jsmediatags

腾讯云代理商
海外云服务器