我有一张结构相似的表:
ID | NAME | BRAND_ID
--------------------------------
22 | Phone1 | 2
25 | Cereal | 9
33 | Cereal | 4
39 | Water | 3
我还有一张品牌表:
ID | NAME
--------------------
2 | PhoneMaker
9 | CerealEaters
3 | WaterDoers
当用户进行搜索时,我执行此查询并显示结果
SELECT * FROM `products`
WHERE `name` COLLATE UTF8_UNICODE_CI LIKE '%$user_search%'
ORDER BY `id` DESC
我需要的是用户也能够使用品牌名称进行搜索。
示例:用户输入“Phone”,因此他找到了“Phone1”。
示例 2:用户正在寻找“CerealEaters”品牌,因此结果显示“Cereal”(id 25)和“CerealEaters”。
当用户在“产品”表中进行搜索时,如何将品牌 ID 与品牌名称相关联?
最佳答案
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
可能会有所帮助。在这种情况下,针对品牌名称的搜索将失败,但针对产品名称的搜索可能仍然匹配。
关于mysql - 根据品牌ID获取品牌名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40612308/