这有点难以解释,但这里有。我有一个书籍数据库,里面有两个表。
一个用于唯一的图书关键字,即仅将ID归因于每个关键字:
id | keyword ______|____________ k1 | drama k2 | thriller k3 | biography
一个用于将图书ID与关键字ID匹配(即每本图书的所有关键字):
book_id | keyword_id __________|_____________ b1 | k3 b2 | k1 b2 | k2
所以基本上,书" b1"有关键字"传记,"并预订" b2"有关键字"惊悚"和"传记"。
我的问题是:如果我有一个书籍ID(比如" b2"),我有办法在数据库中找到至少的其他书籍吗? 2个(或任何其他数字)匹配关键字与" b2"?所以在这个例子中,其他书籍也有" k1"和" k2"作为关键词?这将是一种查找相关书籍的方法。"
我欢迎任何帮助。如果您想要澄清我要问的内容,请告诉我。
答案 0 :(得分:2)
是。实际上,您只需要第二个表格。
select bk.book_id, count(*)
from BookKeywords bk join
BookKeywords bkb2
on bkb2.book_id = 'b2' and
bk.keyword_id = bkb2.keyword_id
group by bk.book_id
having count(*) >= 2;
如果您需要匹配关键字列表,可以添加group_concat(bk.keyword_id)
。