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`, '%')
我有两个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`, '%')