用户登录

要找出某个内容还有给这个内容贴上的标签,只需要在段查询里面修改一下这个查询的条件,换成 post.id ,等于 3 ,意思就是查询出 id=3 的这个内容,包含给这个内容贴上的标签。

现在这个内容只贴上了一个标签,下面我们可以手工在 post_tag 里面添加一条数据记录,内容的 id 是 3 ,标签的 id 是 2,保存一下。意思就是给 id=3 的这个内容,贴上 id=2 的这个标签。

回来重新执行一下这段查询,这次找到了两个结果。这个 id=3 的这个内容被贴上了两个标签。

下面再解决一下这个重复问题。先在这段查询的最后,用一个 GROUP BY,分组条件设置成 post.id 。然后在选择的字段里面,去掉 tag.name,这里换成一个 JSON_ARRAYAGG 组织一个 JSON 数组,起个名字叫 tags 。数组里的项目是 JSON_OBJECT ,用它组织一个 JSON 对象,需要一个 id 属性,对应的值是 tag 表里的 id,还需要一个 name 属性,对应的值是 tag 表里的 name。

执行一下这段查询,现在就解决了内容项目重复出现的问题,在这个结果里面有个 tags 栏目,里面是一组标签数据。

重新设置一下查询条件, post.id 等于 1 ,这个内容没有被贴上标签,所以它的 tags 栏目的值里面这个 JSON 对象的 id 还有 name 都是 null。

这里可以在查询里用一个 IF 判断一下,剪切一下这个 JSON_OBJECT,换成一个 IF, 判断的条件是 tag.id ,如果 tag.id 没值,就用一个 NULL ,如果有值,就用一个 JSON_OBJECT

执行一下这段查询,现在内容如果没有相关的标签,这个 tags 栏目里的数组里面就会出现一个 null ,如果内容有相关的标签,tags 栏目的值就会是一组标签数据。

找出某个内容与这个内容的标签《 Node.js 服务端应用开发:资源关系 》

统计

12489
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点