Php MySql获取产品搜索结果中的类别计数
我有一个页面的搜索结果,在那里出现了用户搜索的产品。我需要一个查询,这将给我一个所有产品的类别计数 有一些条件:Php MySql获取产品搜索结果中的类别计数,php,mysql,sql,left-join,Php,Mysql,Sql,Left Join,我有一个页面的搜索结果,在那里出现了用户搜索的产品。我需要一个查询,这将给我一个所有产品的类别计数 有一些条件: 一个产品可以有多个类别 有一个产品表: productId productName 1 corns 2 Turmeric 3 Cornetto 一个类别表: catId catName ParentCategory 101 Vegetable 111 110
productId productName
1 corns
2 Turmeric
3 Cornetto
一个类别表:
catId catName ParentCategory
101 Vegetable 111
110 Chair 0
111 Edible 0
112 Table 0
113 Rooms 0
和一个产品类别关系
id productId catId
1 1 101
2 1 111
3 2 111
4 3 111
SELECT p.productName,
GROUP_CONCAT(c.catId) as categoryid,
GROUP_CONCAT(c.ParentCategory),
c.catName,
c.Parent_Category
FROM Products p
LEFT JOIN `REL_Products__Categories` pc
ON pc.`productId` = p.`productId`
LEFT JOIN `Categories` c
ON pc.`catId` = c.`catId`
WHERE p.isActive = 1
AND p.Searchable = 1
GROUP BY p.record_number
HAVING (p.productName LIKE '%edible%'
OR p.Description LIKE '%edible%'
OR c.catName LIKE '%edible%)
productId productName categoryid ParentCategory
1 corns 101,111 111,0
2 Turmeric 111 0
3 Cornetto 111 0
现在我需要以这种形式提供上述信息:
Category Id Count Parent Id
101 1 111
111 3 0
我这样做的方式是否错误,可能是第一个查询的结果可以自定义,这样我就可以接近我的最终结果。请建议我该怎么做
或者这完全可以通过Sql查询实现,或者我需要在其中使用PHP循环
提前谢谢。根据您的结果和SQL,我想您可以试试这个 只要
JOIN
和COUNT
,您的条件就可以移动到其中
fromHAVING
,因为HAVING from aggregate函数条件
架构(MySQL v5.7)
查询#1
SELECT pcr.catId,COUNT(*),c.ParentCategory
FROM
Products p
LEFT JOIN PRODUCT_CATEGORIES_RELATION pcr ON pcr.productId = p.productId
LEFT JOIN CATEGORIES c on c.catId = pcr.catId
GROUP BY pcr.catId,c.ParentCategory;
| catId | COUNT(*) | ParentCategory |
| ----- | -------- | -------------- |
| 101 | 1 | 111 |
| 111 | 3 | 0 |
您能提供这些表格中的一些样本数据吗?我根据您的查询和预期结果编写了一个答案,如果没有达到您的预期,您可以显示一些表格数据,帮助我们更清楚地了解您的问题谢谢,我也编辑了我的问题。您可以尝试我的答案,因为查询搜索结果缺失,我还需要那个搜索查询,它将根据用户的搜索条件显示结果。
SELECT pcr.catId,COUNT(*),c.ParentCategory
FROM
Products p
LEFT JOIN PRODUCT_CATEGORIES_RELATION pcr ON pcr.productId = p.productId
LEFT JOIN CATEGORIES c on c.catId = pcr.catId
GROUP BY pcr.catId,c.ParentCategory;
| catId | COUNT(*) | ParentCategory |
| ----- | -------- | -------------- |
| 101 | 1 | 111 |
| 111 | 3 | 0 |