0

これらの 2 つのテーブルがあり、brand.NAME と product.NAME を LIKE を使用して 1 つの文字列として検索できるようにしたいと考えています。これから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

最初のドラフト、盲目的な推測...

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 に答える
0

2 つのテーブルを結合してから、LIKE を実行する必要があります。1 つの注意点: ストレート CONCAT を実行すると、"NikeShoes" になるため、"Nike Shoes" は決して一致しません。

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

編集: とはいえ、私は他のポスターに同意します - ブランドと製品を別々に調べる方がはるかに有利です. ユーザーが好きなように入力できる「google like」検索がない限り - しかし、その場合は、UI を改訂してもらいたいと思います。

于 2012-07-09T18:19:44.493 に答える
0
.. where Product.name like '%pattern%' or Brand.name like '%pattern%'

それは動作しますか?

そうは言っても、OR はコストがかかるため、ワイルド char で始まるパターン検索もコストがかかります。どちらもかなりの出費になります。

于 2012-07-09T18:18:37.370 に答える