SQL选择类似的产品

时间:2015-11-21 08:39:40

标签: mysql sql select join

我有以下数据库结构:(MySQL)

product(id,name)
category(id,name)
category_manager(id,fk_product,fk_category)

我想在有产品时选择类似的产品。应根据每个产品的类别进行选择。我想要类似WP的类似帖子,但我不知道怎么写下来。

让我举个例子。 E.g。

我有3个产品包含以下内容:

product(id,name)
product(1,towel)
product(2,coat)
product(3,tshirt)
product(4,shoes)
....

category(id,name)
category(1,wool)
category(2,cotton)
category(3,windproof)
category(3,synthetic)
category(4,lether)
....

category_manager(id,fk_product,fk_category)
category_manager(1,1,1)
category_manager(2,1,2)
category_manager(3,2,2)
category_manager(4,2,3)
category_manager(5,3,1)
category_manager(6,4,4)
....

如果我有毛巾ID,我该如何选择以下产品:

3,tshirt”(因为它属于“1,wool”类别)

2,coat”(因为它属于“2,cotton”类别)

??????

这可能是一个加入声明,但......

2 个答案:

答案 0 :(得分:2)

您需要自我加入管理器表:

select p.* 
from manager m1
join manager m2 on m1.fk_category = m2.fk_category
Join product p on m2.fk_product = p.id
where m1.fk_product = 1 and m2.fk_product <> m1.fk_product

答案 1 :(得分:0)

如果我没错,我理解正确

SELECT p.name, c.name 
FROM product p
JOIN category_manager cm on p.id = cm.fk_product
JOIN category c on cm.fk_category = c.id