我有两张桌子
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.我怎么能这样做?
答案 0 :(得分:1)
恕我直言,最好的办法是添加一个表productsToKeywords
,它将允许products
和Keywords
表之间的多对多关系。
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 + '%')