我正在使用MySQL作为电子商务项目的后端。在第一个屏幕中,我在用户搜索某些内容时显示结果,用户可以使用这些结果选择任何一个结果,并根据选择获得与选定结果相关的所有产品。

范例:
屏幕1(从搜索栏):用户搜索“ tropicana”,则结果集将为:
第一名:tropicana在果汁中混合果汁(类别)
第二名:果汁中的tropicana苹果汁(类别)
第三名:果汁中的tropicana橙汁(类别)
第四名:tropicana菠萝汁(类别)
第五名:果汁(类别)和所有其他与tropicana相关的产品中的tropicana番石榴汁,无论任何类别

屏幕2(选择“ tropicana菠萝果汁”后):用户根据所选产品名称及其类别获得结果集(我在此屏幕中使用了分页):

第一名:tropicana将果汁与所有基本细节混合在一起
第二名:tropicana苹果汁,所有基本细节
第三名:tropicana橙汁,所有基本细节
第四名:tropicana菠萝汁,所有基本细节
第五名:tropicana番石榴汁,所有基本细节

但是我想要的是用户应该首先查看所选产品的详细信息,然后再查看所有其他相关产品:

范例:
第一名:tropicana菠萝汁,所有基本细节
第二名:tropicana苹果汁,所有基本细节
第三名:tropicana橙汁,所有基本细节
第四名:tropicana将果汁与所有基本细节混合在一起
第五名:tropicana番石榴汁,所有基本细节

我已使用此sql查询:

("select p.id,p.product_name,p.rating,p.rating_count,p.product_mrp from product p
    INNER JOIN product_category_mapping pcm ON p.id = pcm.product_id
    where (p.product_name like concat('",in_product_name,"','%') or p.product_name like concat('%','",in_product_name,"','%'))
    order by p.",in_order_by," ",in_order_type," limit ", var_offset,",",var_limit);


有人可以为此建议什么好选择吗?

最佳答案

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id SERIAL PRIMARY KEY
,product VARCHAR(255) NOT NULL
);

INSERT INTO my_table (product) VALUES
('tropicana pineapple juice'),
('tropicana apple juice'),
('tropicana orange juice'),
('tropicana mix fruit juice'),
('tropicana guava juice'),
('jolt pineapple juice'),
('jolt apple juice'),
('jolt orange juice'),
('jolt mix fruit juice'),
('jolt guava juice'),
('duff pineapple juice'),
('duff apple juice'),
('duff orange juice'),
('duff mix fruit juice'),
('duff guava juice'),
('acme pineapple juice'),
('acme apple juice'),
('acme orange juice'),
('acme mix fruit juice'),
('acme guava juice');

ALTER TABLE my_table ADD FULLTEXT(product);

SELECT *
     , MATCH(product) AGAINST('tropicana pineapple') x
  FROM my_table;
+----+---------------------------+-----------------+
| id | product                   | x               |
+----+---------------------------+-----------------+
|  1 | tropicana pineapple juice | 2.4020363687754 |
|  2 | tropicana apple juice     | 1.0619741682407 |
|  3 | tropicana orange juice    | 1.0619741682407 |
|  4 | tropicana mix fruit juice | 1.0619741682407 |
|  5 | tropicana guava juice     | 1.0619741682407 |
|  6 | jolt pineapple juice      | 1.3400622005347 |
|  7 | jolt apple juice          |               0 |
|  8 | jolt orange juice         |               0 |
|  9 | jolt mix fruit juice      |               0 |
| 10 | jolt guava juice          |               0 |
| 11 | duff pineapple juice      | 1.3400622005347 |
| 12 | duff apple juice          |               0 |
| 13 | duff orange juice         |               0 |
| 14 | duff mix fruit juice      |               0 |
| 15 | duff guava juice          |               0 |
| 16 | acme pineapple juice      | 1.3400622005347 |
| 17 | acme apple juice          |               0 |
| 18 | acme orange juice         |               0 |
| 19 | acme mix fruit juice      |               0 |
| 20 | acme guava juice          |               0 |
+----+---------------------------+-----------------+
20 rows in set (0.00 sec)

10-06 02:29