搜索标题中的关键字

时间:2015-07-01 05:54:37

标签: sql sql-server

我有两张桌子

1.products fields

1.product_id
2.product_title,
3.product_desc
4.product_img

2.keywords字段

1. id
2. keyword

关键字将是

 1.hair
 2 body
 3 tv
 4 mobile 

product_title将是

1. Hair oil
2. Hair Straightner
3. Body oil
4. Body massage
5. LCD TV 32"
6. LED TV 40"
7. Air conditioner
8. Washing machine
9. Refrigrator

根据标题中的关键字,它必须显示列表,在这里它必须显示1到6的产品,它不应该显示7到9.我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

恕我直言,最好的办法是添加一个表productsToKeywords,它将允许productsKeywords表之间的多对多关系。

create table productsToKeywords
(
    ptk_product_id int foreigm key reference products (product_id),
    ptk_keyword_id int foreigm key reference keywords (id),
    primary key(ptk_product_id, ptk_keyword_id)
)

然后你的选择看起来像这样:

select product_id, product_title,, product_desc, product_img
from products 
inner join productsToKeywords on(product_id = ptk_product_id)
inner join Keywords on(ptk_keyword_id = id)
where keyword = 'hair'

答案 1 :(得分:0)

你可以试试这个:

  select p.* from Product p
    inner join Keyword k
    on p.product_title like '%' + k.keyword + '%'

如果关键字或标题字段中可能包含empty值,则您还需要添加条件以忽略此类记录。否则它会与所有人匹配。

答案 2 :(得分:0)

我建议你像这样使用EXISTS

SELECT *
FROM products p
WHERE EXISTS( SELECT 1
              FROM keywords k
              WHERE p.product_title Like '%' + k.keyword + '%')