繁体   English   中英

将流派/类别表与链接表以逗号分隔的合并表

[英]Merge table with genre/category table seperated by comma from linking table

我正在制作一个 gif 数据库,我想在我的数据库中按流派存储每个 gif,我使用了 3 个表,流派、gif 和 gifs_genres,流派存储系统中的所有流派,gif 是实际的 gif 和他们的存储位置,gifs_genres 存储什么 gif 有什么流派

它们看起来像这样:
流派:
流派
动图:
动图
gifs_genres:
gifs_genres

并且我希望能够搜索多种类型并仅找到所有类型的结果

期望的结果:(在exel中制作以展示)
过滤流派 36(可爱)
类型 36 想要的结果

如果我过滤 38 和 36(卡通和可爱)
类型 36 和 38 的预期结果

我现在使用的是什么:

USE gifapi;
SELECT title, file, genre
FROM gifs
RIGHT JOIN gifs_genres ON  gifs.id = gifs_genres.gif_id
RIGHT JOIN genres ON gifs_genres.genre_id = genres.id
WHERE gifs_genres.genre_id = 36

我对 SQL 不是很有经验,所以我无法弄清楚。 我之前对 sql 所做的只是 Select * 和 UPDATE

我想要逗号分隔值的原因只是为了向用户显示 gif 的类型,我不会存储创建的表。

您可以使用having子句的连接、聚合和过滤:

select
    i.title,
    i.file,
    group_concat(e.genre order by e.id) genres
from gifs i
inner join gives_genre g on g.gif_id = i.id
inner join genres e on e.id = g.genre_id
group by i.title, i.file
having
    max(e.id = 36) = 1
    and max(e.id = 38) = 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM