好的,我可以说我有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
两种语言链接的媒体列表。
提前致谢。
答案 0 :(得分:0)
我相信这就是你想要的。
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'
)