在两个单独的表中的CONCAT列上使用LIKE

时间:2012-07-09 18:12:35

标签: mysql

我有这两个表,我希望能够使用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  | 

4 个答案:

答案 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%'