SELECT a.id, a.name, GROUP_CONCAT( b.name ) AS NAMES , GROUP_CONCAT( b.id ) AS ids FROM product a LEFT JOIN product b ON a.id = b.parent_id WHERE a.parent_id =0 GROUP BY b.parent_id 我这样查询出来的数据基本够用,但是如果父级下面的子集为空,那么就不能查询出来,能看有优化的余地么?
你确定这么做可行??刚刚我在oracle中执行报错 :不是group by 表达式。。
既然你是两级的,用不着那么麻烦吧... 直接组成两个数组..一个父类,一个子类$query = mysql_query("select id,name,parent_id from product"); while($row = mysql_fetch_array($query)){ if ($row['2'] ==0){ $parientList[$row['0']]=$row['1']; }else{ $childList[$row['2']][$row['0]]=$row['1']; } }这样要用父类的就用父类的数组..用子类的就用子类... 很简单..
MYSQL 支持这种查询 , 只是 from 后边那个 括号中的内容是一条查询语句 ,并给括号后边起一个 别名 即可
SELECT a.id, a.name, GROUP_CONCAT( b.name ) AS
NAMES , GROUP_CONCAT( b.id ) AS ids
FROM product a
LEFT JOIN product b ON a.id = b.parent_id
WHERE a.parent_id =0
GROUP BY b.parent_id
我这样查询出来的数据基本够用,但是如果父级下面的子集为空,那么就不能查询出来,能看有优化的余地么?
直接组成两个数组..一个父类,一个子类$query = mysql_query("select id,name,parent_id from product");
while($row = mysql_fetch_array($query)){
if ($row['2'] ==0){
$parientList[$row['0']]=$row['1'];
}else{
$childList[$row['2']][$row['0]]=$row['1'];
}
}这样要用父类的就用父类的数组..用子类的就用子类...
很简单..