Php 在_集合中查找_并按匹配数排序
我创建查询如下。它工作得非常好:Php 在_集合中查找_并按匹配数排序,php,mysql,Php,Mysql,我创建查询如下。它工作得非常好: $get_products = "SELECT P.*, C.`category_name`, GROUP_CONCAT(`category_name` SEPARATOR ', ') AS cat FROM `products` P NATURAL JOIN `categories` C
$get_products = "SELECT P.*, C.`category_name`,
GROUP_CONCAT(`category_name` SEPARATOR ', ')
AS cat
FROM `products` P
NATURAL JOIN `categories` C
NATURAL JOIN `product_to_categories`
WHERE FIND_IN_SET(`category_name`, '$selected_categories')
AND `product_price`
BETWEEN '$price_min'
AND '$price_max'
GROUP BY `product_name`
ORDER BY 1 DESC";
因此,如果我有产品,即:
苹果属于以下类别:水果,绿色,圆形车轮属于以下类别:机器,黑色,圆形
香蕉属于以下类别:水果,黄色,长方体
手机属于以下类别:电子产品,黑色,长方体
然后选择类别:水果和圆形
我将收到:
苹果(2匹:水果和圆形),车轮(1匹:圆形)和香蕉(1匹:水果) 现在我试着按照匹配的数量对它进行排序(苹果在第一名有2个匹配,香蕉在第二名有1个匹配,等等…)
我有什么办法可以得到这个吗?您只需要按组内的类别名称进行排序
$get_products = "SELECT P.*, C.`category_name`, GROUP_CONCAT(`category_name` SEPARATOR ', ') AS cat FROM `products` P NATURAL JOIN `categories` C NATURAL JOIN `product_to_categories` WHERE FIND_IN_SET(`category_name`, '$selected_categories') AND `product_price` BETWEEN '$price_min' AND '$price_max' GROUP BY `product_name`
ORDER BY count(C.`category_name`) DESC";
请在您发布代码时引入换行符,我们不希望必须横向滚动几英里才能看到您的完整代码。@CBroe,对不起-我错了。纠正