0

我有这两个表,我希望能够使用 LIKE 将 brand.NAME 和 product.NAME 作为一个字符串进行搜索。我将 CONCAT 与 JOINS 结合使用并没有成功,所以这超出了我的工资等级。

这甚至可能吗?

通缉行为

在搜索“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

4 回答 4

0
.. where Product.name like '%pattern%' or Brand.name like '%pattern%'

那样有用吗?

话虽如此,OR 很昂贵,所以以野生字符开头的模式搜索也是如此。两者都会花费你不少钱。

于 2012-07-09T18:18:37.370 回答
0

您必须加入这两个表,然后运行 ​​LIKE。一个警告:如果你做一个直接的 CONCAT,“Nike Shoes”永远不会匹配,因为你将拥有的是“NikeShoes”。

SELECT ... FROM Product JOIN Brand ON (Product.BrandId = Brand.Id) WHERE CONCAT(Product.name, ' ', Brand.name) LIKE '%ike Sho%';

编辑:也就是说,我同意其他海报 - 分别查看品牌和产品会更有优势。除非您有“类似谷歌”的搜索,用户可以在其中输入他喜欢的任何内容——但在这种情况下,我会尝试修改 UI。

于 2012-07-09T18:19:44.493 回答
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%'
于 2012-07-09T18:21:16.143 回答
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%'
于 2012-07-09T18:22:03.680 回答