从产品类别及其所有子类别中获取产品

时间:2017-09-06 08:07:48

标签: php mysql database

我正在建立一个电子商务网站,但遇到了某些问题

问题

我有一个名为饮料的类别现在在这个类别下我有两个子类别,威士忌和非酒精。在非酒精饮料下,我们在父母类别中提供果汁和葡萄酒饮料,用于威士忌和非酒精饮料,而非酒精饮料则是果汁和葡萄酒的父母类别。问题是,当用户点击饮料时,我希望他们能够看到威士忌类别中的所有商品和非算名类别的孩子,但我查询以获取此类别中的产品并将它们组合在一起不是working.instead它只获得父类饮品的产品,因为没有产品

代码

public function select_from_product_page_all($cat,$level){

$que = $this->query("SELECT a.product_category_id,a.quantity, a.product_id, a.description, a.product_name, a.image, a.price, Deriv1.Count FROM `product` a  LEFT OUTER JOIN (SELECT parent, COUNT(*) AS Count FROM `product_category` GROUP BY parent) Deriv1 ON a.product_category_id = Deriv1.parent WHERE a.product_category_id=" . $cat);
return $que;
}

数据库结构

产品表格列

PRODUCT_NAME,数量,价格,图像,描述,product_category_id

产品类别表格列

product_category_id,名,父

产品与类别的关系是product_category_id,product_category与父类别的关系是父列,父列中保存的是父母的product_category_id。

1 个答案:

答案 0 :(得分:0)

我能够通过下面的查询来解决它

 public function select_from_product_page_all($cat,$level){
$que = $this->query("SELECT  p.product_category_id,p.quantity, p.product_id, p.description, p.product_name, p.image, p.price FROM product p
WHERE p.product_category_id IN (
 SELECT c.product_category_id
 FROM product_category c
WHERE c.product_category_id = " . $cat . "
UNION ALL
SELECT c2.product_category_id
FROM product_category c
  LEFT JOIN product_category c2 ON c.product_category_id = c2.parent
WHERE c.product_category_id = " . $cat . "
UNION ALL
SELECT c3.product_category_id
FROM product_category c
  LEFT JOIN product_category c2 ON c.product_category_id = c2.parent
  LEFT JOIN product_category c3 ON c2.product_category_id = c3.parent
WHERE c.product_category_id = " . $cat . "
UNION ALL
SELECT c4.product_category_id
FROM product_category c
  LEFT JOIN product_category c2 ON c.product_category_id = c2.parent
  LEFT JOIN product_category c3 ON c2.product_category_id = c3.parent
  LEFT JOIN product_category c4 ON c3.product_category_id = c4.parent
WHERE c.product_category_id = " . $cat . "
)
GROUP BY p.product_id");
return $que;
}
相关问题