gpt4 book ai didi

MySQL 查询按特定类别列出多类别文章,同时仍检索主猫

转载 作者:可可西里 更新时间:2023-11-01 08:40:08 26 4
gpt4 key购买 nike

我有一个文章系统,其中的文章可以位于不同的部分,例如食谱、指南、社论、新闻等。

这些文章中的每一篇也可以属于一个或多个类别。例如,食谱可以属于松饼类别和蓝莓类别。

然后当我生成 url 时,它的格式为:

example.com/{post_section}/{primary_post_category_slug}/{post_title}/

在列出文章时,我会在标题上方显示文章所属的每个类别。这些类别中的每一个都是一个链接,单击该链接时仅显示属于该类别的文章。

我的问题是,当列出一个类别中的所有文章时,如果一篇文章有​​多个类别,我不知道如何检索主要类别。例如,如果我有一篇关于蓝莓松饼食谱的文章,我会把它放在松饼的主要类别和蓝莓的次要类别中。

现在,如果访问者浏览蓝莓类别,它应该列出所有与蓝莓相关的文章,但链接仍应包含主要类别 slug 是什么。我的问题是检索与我们列出的类别不同的​​主要类别。

下面是我正在使用的示例查询和表结构:

select p.*, c.*, t.* from posts p 
left join post_category_selected a on a.post_id = p.post_id
left join post_category c using (post_category_id)
left join post_section t using (post_section_id)
and c.post_category_slug = "blueberry"
and t.post_section_slug = "recipes"
order by p.post_publish_date desc

这确实会返回所有具有蓝莓类别的文章,但我不知道如何检索松饼的 primary_category,因此我可以在生成链接时使用它。

希望这是有道理的。

表结构:

posts
|- post_id
|- post_title
|- post_section
|- post_slug
|- post_publish_date

post_category
|- post_category_id
|- post_section_id
|- post_category
|- post_category_slug

post_category_selected
|- post_category_selected_id
|- post_id
|- post_category_id
|- is_primary (enum Y,N)

post_section
|- post_section_id
|- post_section_title
|- post_section_slug

最佳答案

您需要分别加入 post_category 和 post_category_selected 两次,一次用于所选类别,一次用于主要类别。像这样:

select p.*, c1.*, t.*, 
c2.post_category_slug as primary_category_slug
from posts p
left join post_category_selected a1 on a1.post_id = p.post_id
left join post_category c1 using (post_category_id)
left join post_section t using (post_section_id)
and c.post_category_slug = "blueberry"
and t.post_section_slug = "recipes"
left join post_category_selected a2 on a2.post_id = p.post_id
and a2.is_primary = 'Y'
left join post_category c2 on c2.post_category_id = a2.post_category_id
order by p.post_publish_date desc

您可能需要从 c2 添加一些额外的列,具体取决于您的其他要求。

关于MySQL 查询按特定类别列出多类别文章,同时仍检索主猫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34910127/

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