Sql 反向搜索产品和折扣

Sql reverse search for products and discounts

我有两个table,一个是产品,一个是折扣。 折扣 table 看起来像:

ID | Name         | Percentage | Product Name Search Param
-----------------------------------------------------------
1  | Black Friday | 50         | a
2  | White Friday | 75         | b

产品 table 看起来像:

ID | Name         | Price 
--------------------------
1  | Shoes        | 2500 
2  | Hat          | 1500
3  | Baseball cap | 500

如果产品名称包含 Discount.Product 名称搜索参数值,则产品获得折扣百分比。我从 Discount

购买了产品
SELECT * FROM Products WHERE name LIKE '%a%'

但是我不知道如何获得产品折扣。

我想购买 ID 2 折扣的产品。

您可以加​​入 like 条件:

select p.*, d.*
from product p
inner join discounts d 
    on p.name like concat('%', d.product_name_seach_param, '%')

注意:就目前而言,您的设计看起来不太好。最好有一个用于产品的参考 tables 和一个用于折扣的参考,以及一个将产品与折扣相关联的 junction table

一个简单的 INNER JOIN 就可以做到:

SELECT *
FROM Products
JOIN Discounts ON Products.name LIKE CONCAT('%', product_name_search_param`, '%')