我有这两个表,我希望能够使用LIKE在brand.NAME和product.NAME上搜索一个字符串。我和CONINS一起使用CONCAT是不成功的,所以这高于我的薪水。
这甚至可能吗?
通缉行为
搜索“NIKE sh”
结果:
NIKE Shoes
NIKE shirts
产品
ID | NAME | brandID |
1 | Shoes | 1 |
2 | pants | 2 |
3 | shorts | 3 |
4 | shirts | 1 |
5 | socks | 2 |
品牌
ID | NAME |
1 | NIKE |
2 | Adidas |
3 | Hummel |
答案 0 :(得分:0)
.. where Product.name like '%pattern%' or Brand.name like '%pattern%'
这有用吗?
话虽如此,OR也很昂贵,从野性字母开始的模式搜索也是如此。两者都会花费你很多。
答案 1 :(得分:0)
您必须加入两个表,然后运行LIKE。一个警告:如果你做一个直接的CONCAT,“耐克鞋”永远不会匹配,因为你将拥有的将是“NikeShoes”。
SELECT ... FROM Product JOIN Brand ON(Product.BrandId = Brand.Id)WHERE CONCAT(Product.name,'',Brand.name)LIKE'%ike Sho%';
编辑:那就是说,我同意其他海报 - 分别研究品牌和产品会更有利。除非你有一个“google like”搜索,用户可以输入任何他想要的东西 - 但在这种情况下,我会尝试修改用户界面。
答案 2 :(得分:0)
初稿,盲目猜测......
SELECT * FROM product
INNER JOIN brand
ON product.brandID = brand.id
WHERE product.name LIKE '%string%'
OR brand.name LIKE '%string%'
已编辑以匹配问题中的更改...
SELECT * FROM product
INNER JOIN brand
ON product.brandID = brand.id
WHERE product.name + ' ' + brand.name LIKE '%string%'
答案 3 :(得分:0)
SELCT * FROM
(SELECT P.NAME + B.NAME AS product_brand
FROM product AS P
INNER JOIN brand as B
ON
P.brandID = B.ID) SQ
WHERE
SQ.product_brand like '%whatever%'