首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于品牌ID的品牌名称获取

基于品牌ID的品牌名称获取
EN

Stack Overflow用户
提问于 2016-11-15 14:27:04
回答 3查看 106关注 0票数 1

我有一张结构相似的桌子:

代码语言:javascript
复制
ID  |  NAME      |  BRAND_ID
--------------------------------
22  | Phone1     |  2
25  | Cereal     |  9
33  | Cereal     |  4
39  | Water      |  3

我还有一张牌子的桌子:

代码语言:javascript
复制
ID  |  NAME
--------------------
2   |  PhoneMaker
9   |  CerealEaters
3   |  WaterDoers

当用户执行搜索时,我将执行此查询并显示结果。

代码语言:javascript
复制
SELECT * FROM `products`
WHERE `name` COLLATE UTF8_UNICODE_CI LIKE '%$user_search%'
ORDER BY `id` DESC

我需要的是,用户也可以用这个品牌进行搜索。

用户写“电话”,所以他找到了"Phone1“。

例2:用户正在寻找"CerealEaters“品牌,因此结果显示”谷物“(id 25)和"CerealEaters”。

当用户在“产品”表中搜索时,如何将该品牌id与品牌名称连接起来?

EN

回答 3

Stack Overflow用户

发布于 2016-11-15 14:30:04

代码语言:javascript
复制
SELECT *
FROM products p
LEFT JOIN brands b
    ON p.BRAND_ID = b.ID
WHERE p.name COLLATE UTF8_UNICODE_CI LIKE '%$user_search%' OR
      b.name COLLATE UTF8_UNICODE_CI LIKE '%$user_search%'
ORDER BY p.id DESC

在这里使用LEFT JOIN可能是有益的,当一个产品,由于某种原因,没有匹配的品牌。在这种情况下,对品牌名称的搜索将失败,但针对产品名称的搜索可能仍然匹配。

票数 3
EN

Stack Overflow用户

发布于 2016-11-15 14:29:32

代码语言:javascript
复制
SELECT * FROM `products`
LEFT JOIN `brands` ON `products`.`brand_id` = `brands`.`id`
WHERE `products`.`name` COLLATE UTF8_UNICODE_CI LIKE '%$user_search%'
   OR `brands`.`name` COLLATE UTF8_UNICODE_CI LIKE '%$user_search%'
ORDER BY `products`.`id` DESC
票数 0
EN

Stack Overflow用户

发布于 2016-11-15 14:33:58

对于LEFT JOIN,您的预期查询如下:

代码语言:javascript
复制
SELECT * FROM products a left join brands b on a.BRAND_ID =  b.ID 
WHERE a.NAME COLLATE UTF8_UNICODE_CI like '%$user_search%' 
or b.NAME COLLATE UTF8_UNICODE_CI like '%$user_search%'
ORDER BY a.ID DESC
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40612308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档