我使用PHP /代码点火器来显示数据。 在我的表(产品)中,我有一个名为“ProductCategory”的字段。由于产品可以属于多个类别,并且根据我的项目要求和XML文件,此字段填充如下:
id 121
ProductCode m34
名称诺基亚6800
ProductCategory 手机;外壳
ProductMainCategory 手机
sort_order 3
//////////////////////第二产品/////////////////////// ///
id 344
ProductCode 32344
名称 Xbox 360 Black
ProductCategory 控制台
ProductMainCategory 特别优惠
sort_order 5
第三产品/////////////////////// ///id 3433
ProductCode 342zxc4
名称 Iphone 5
ProductCategory 配件;手机4G
ProductMainCategory 手机
sort_order 3
依旧.....
问题:
因为,我已经将产品分为两个类别,分别为semcolon(;) 拆分分号产品类别';'将值分为两类并在url中传递它们以根据“ProductCategory”和“ProductMainCategory”显示产品。 我正在使用查询字符串/ uri段来显示我的产品。
<?
$id2=urldecode($this->uri->segment(3)); // gets values like Handsets
$id=urldecode($this->uri->segment(4)); // gets values like Mobiles
$this->db->like('ProductCategory',$id);
$this->db->or_like('ProductCategory',';'.$id);
//$this->db->not_like('ProductCategory','Store 8');
//$this->db->like('ProductCategory',';'.$id);
$this->db->where('ProductMainCategory',$id2);
$this->db->order_by('sort_order','asc');
$query_data=$this->db->get('Products');
?>
根据代码和MYSQL数据,我如何显示我的单个产品,以便它可以单独显示在每个类别下(根据查询字符串/ uri段值),如下所示:
Handsets¬
|-Mobiles
|--- Nokia 6800
|-Casings
|---- Nokia 6800
|-Mobiles 4G
|--- Iphone 5
|-Accessories
|---- Iphone 5
Special Offers¬
|-Consoles
|---Xbox 360 Black
我已经在树形结构中显示了所需的查询输出以供澄清。您可以将它与上面的数据进行比较以获得澄清。请帮助我。谢谢
答案 0 :(得分:0)
我假设您有一个名为ProductCategories的有效产品类别表。您可以使用复杂的连接条件按类别获取产品。以下是一个计算每个类别中产品数量的示例:
select pc.ProductCategory, count(*) as NumProducts
from Products p join
ProductCategories pc
on concat(';', p.ProductCategory, ';') like concat('%;', pc.ProductCategory, '%;')
group by pc.ProductCategory
如果您没有ProductCategories表,可以在查询中创建一个:
select pc.ProductCategory, count(*) as NumProducts
from Products p join
(select 'Console' as ProductCategory union all
select . . .
) pc
on concat(';', p.ProductCategory, ';') like concat('%;', pc.ProductCategory, '%;')
group by pc.ProductCategory
但是,我只建议这样做是为了进行临时的一次性查询,因为可能会随着时间的推移添加新的类别。