下载了一个程序,里面有一个可无限分别的类别表。结构大致如下:category(主要为乐器类别)
id catname pid level
10 string 0 1 (说明:id默认从10开始递增,弦类,根类为0,级别1)
11 drum 0 1
12 wind 0 1
... ...
1010 guitar 10 2 (说明:id由父id乘100+递增10,吉他,pid为父类id,级别2)
1011 banjo 10 21210 saxophone 12 2
... ...
101010 classical 1010 3 (说明:id由父id乘100+递增10,古典吉他,pid为父类id,级别3)
101011 electric 1010 3
101012 bass 1010 3product(各类别下的不同型号、尺寸具体产品)
id catid proname ...问题是,部分二级分类无三级分类,直接就是产品,有的则分成更细的三级类别,如果我要搜索属于弦类,或鼓类这些根类下的所有产品,如何用sql查询?
如果全部是二级可以用 select * from category inner join product on category.id = product.catid where category.pid = '$id'
但这样对有三级的无效,该怎么办?
id catname pid level
10 string 0 1 (说明:id默认从10开始递增,弦类,根类为0,级别1)
11 drum 0 1
12 wind 0 1
... ...
1010 guitar 10 2 (说明:id由父id乘100+递增10,吉他,pid为父类id,级别2)
1011 banjo 10 21210 saxophone 12 2
... ...
101010 classical 1010 3 (说明:id由父id乘100+递增10,古典吉他,pid为父类id,级别3)
101011 electric 1010 3
101012 bass 1010 3product(各类别下的不同型号、尺寸具体产品)
id catid proname ...问题是,部分二级分类无三级分类,直接就是产品,有的则分成更细的三级类别,如果我要搜索属于弦类,或鼓类这些根类下的所有产品,如何用sql查询?
如果全部是二级可以用 select * from category inner join product on category.id = product.catid where category.pid = '$id'
但这样对有三级的无效,该怎么办?
left join category c on
c.id = p.catid and c.id like CONCAT((select id from category where catname ='$catname'),'%');