【发布时间】:2011-05-23 09:32:28
【问题描述】:
我在同一张表中同时插入了类别和子类别。
id , name , mainCat ,
这是类别的名称。如果用户添加子类别,那么我会将父类别添加到 maincat 并将子类别添加到名称。
但是当进行排序时,我会按类别进行排序。
谁能推荐我最好的查询
【问题讨论】:
我在同一张表中同时插入了类别和子类别。
id , name , mainCat ,
这是类别的名称。如果用户添加子类别,那么我会将父类别添加到 maincat 并将子类别添加到名称。
但是当进行排序时,我会按类别进行排序。
谁能推荐我最好的查询
【问题讨论】:
只要您只有两个级别的类别,那么使用自联接的如下查询就足够了。但是,如果您有许多级别(即层次结构),那么问题就会变得更加困难。请参阅http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ 了解更多信息。
SELECT p.Name, s.Name
FROM Categories s
LEFT JOIN Categories p ON s.mainCat = p.ID
ORDER BY p.Name, s.Name;
【讨论】:
我尝试了很多查询,但最后我用 php 做到了
$category = mysql_query("SELECT * FROM category WHERE mainCat = '' ORDER BY `name` ASC"); 而($data = mysql_fetch_array($category)){ $数组[] = $数据; $subCategory = mysql_query("SELECT * FROM category WHERE mainCat ='".$data['name']."' ORDER BY `name` ASC"); echo "SELECT * FROM category WHERE mainCat ='".$data['name']."' ORDER BY `name` ASC".'【讨论】:
让你试试下面:
SELECT t1.id, t1.name
FROM tablename t1
LEFT JOIN tableName t2
ON t2.name = t1.mainCat
【讨论】: