需要帮助将过滤器添加到MySQL搜索查询

需要帮助将过滤器添加到MySQL搜索查询

好吧,可以说我有3张桌子...

一个称为media,每行的主索引为media_id

一个称为keywords,每行的主索引为keyword_id

最后,我还有一个名为keylinks的表。没有主索引,但是有唯一的索引media_id + keyword_id。您可能会猜到该表是链接到媒体的关键字的索引。这个想法是可以将关键字链接到多个媒体,以便用户可以根据链接到的关键字来浏览媒体。

现在,我正在执行以下操作以获取链接到6的keyword_id的媒体:

SELECT media.*, keywords.*
FROM media
    LEFT JOIN keylinks ON (keylinks.media_id = media.media_id)
    LEFT JOIN keywords ON (keywords.keyword_id = keylinks.keyword_id)
WHERE keywords.keyword_id = '6'


如果我只想返回由6链接的结果,则效果很好。但是,如果我想查找不仅链接到6的keyword_id,而且链接到第二个(或第三个,等等)keyword_id的媒体,该怎么办。

我的问题是我该如何检索具有指向6以及可能8的键链接的媒体列表。

提前致谢。

最佳答案

我相信这就是您想要的。

SELECT *
FROM media
WHERE media_id IN (
    SELECT media_id FROM keylinks WHERE keyword_id = '6'
) AND media_id IN (
    SELECT media_id FROM keylinks WHERE keyword_id = '8'
)

关于mysql - 需要帮助将过滤器添加到MySQL搜索查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19624706/

10-11 03:09