gpt4 book ai didi

MySQL 查询搜索带有父项标签的项

转载 作者:行者123 更新时间:2023-11-29 18:43:08 24 4
gpt4 key购买 nike

所以我遵循了他们在这里所做的事情: MySQL query to search for items with certain tags

但是还有一个额外的要求,假设我们有以下数据:

items:
id | item | parent_id
------------------------
1 | banana | 0
2 | orange | 1
3 | tomato | 0


items_tags:

id | item_id | tag_id
---------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 3
4 | 3 | 4

tags:

id | tag
--------------
1 | yellow
2 | fruit
3 | orange
4 | red

我希望搜索标有 id 2(水果)的项目,并希望返回项目香蕉和橙子。首先,这是存储信息的最佳方式,如果是的话,我可以运行以取回香蕉及其子橙子的最有效查询是什么。

谢谢

最佳答案

存储数据的更好方法可能是从 item_tags 表中删除冗余列(规范化):

items:
id | item | parent_id
------------------------
1 | banana | 0
2 | orange | 1
3 | tomato | 0

items_tags:

item_id | tag_id
------------------
1 | 1
1 | 2
2 | 3
3 | 4

tags:

id | tag
--------------
1 | yellow
2 | fruit
3 | orange
4 | red

那么您获取水果的查询(仅包含与“fruit”标签直接相关的项目)可能是:

select items.id, items.item from items 
inner join item_tags on (items.id=item_id)
inner join tags on (tags.id=tag_id)
where tag = 'fruit'

还包括由父级连接的项目:

select items.id, items.item from items 
inner join items parents on (parents.id=items.parent_id)
inner join item_tags on (item_id=items.id OR item_id=parents.id )
inner join tags on (tags.id=tag_id)
where tag = 'fruit'

关于MySQL 查询搜索带有父项标签的项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44812088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com