2012-01-27 78 views
0

我有几个类别中的一些图像。所有类别都在某个表中(比如tbl_categories)。子类别的级别介于1和10之间。 我想创建一个查询,该查询从某个根类别(可以是子类别本身)提供所有子类别的子类别(及其子类别等)。sql选择来自某个祖先的所有子孙(根类)

实施例:

Category 1 
    subcategory a 
Category 2 
    subcategory b 
     subsubcategory I 
     subsubcategory II 
    subcategory c 

如果我使用第2类,我要子类别b和c,以及subsubcategories我烯II作为一个结果。 听起来相当容易,但我没有得到任何线索。

我是相当新的编写查询......

感谢

+2

你能告诉你的实际的表结构? – JNK 2012-01-27 14:29:49

+1

以及您正在使用哪种RDBMS(MySQL,PostgreSQL,Oracle等)? – 2012-01-27 14:39:41

+0

我有一个tbl_mm_cat,它有一个uid_local(指tbl_img中图像的id)和一个uid_foreign(指tbl_cat中的类别的id)。 EUH我使用的是CMS和它在后台一个phpMyAdmin的模块...... 我成功地用它来检测的图象是类别2或4:\t \t \t \t \t \t $ SQL =请求mysql_query(” SELECT uid_local FROM'tbl_mm_cat' WHERE uid_foreign IN(2,4)AND uid_local ='“。$ item-> getId()。”'“)或die(mysql_error()); getId()只是获取每个图像的每个ID (这是一个搜索模块,用户只能在特定类别中搜索) – GertBoers 2012-01-27 15:17:05

回答

0

试试这个:

//Parents 
$data = mysql_fetch_assoc(mysql_query("select id,name from categories where parent = 0")); 

//Childrens 
foreach($data as $key => $row) 
{ 
    $data[$key]['childrens'] = mysql_fetch_assoc(mysql_query("select id,name from categories where parent ='".mysql_real_escape_string($row['id'])."'")); 

    //childrens 
    foreach($data[$key]['childrens'] as $_key => $_row) 
    { 
     $data[$key]['childrens'][$_key]['childrens'] = mysql_fetch_assoc(mysql_query("select id,name from categories where parent ='".mysql_real_escape_string($_row['id'])."'")); 
    } 
} 

    //Print Array 
print_r($data); 
+0

thx,我会尝试并让你知道它是否工作... – GertBoers 2012-01-27 15:29:46

相关问题