我在同一张表中插入了类别和子类别。
id,name,mainCat,
这是类别的名称。如果用户添加子类别,那么我将父类别添加到名称的主要类别和子类别。
但是在排序的时候我会按类别排序。
任何人都可以建议我最好的查询
答案 0 :(得分:0)
只要您只有两个级别的类别,那么使用自联接的查询就足够了。但是,如果您有许多级别(即层次结构),则问题变得更加困难。有关详细信息,请参阅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;
答案 1 :(得分:0)
我尝试了很多查询,但最后我用php
$category = mysql_query("SELECT * FROM category WHERE mainCat = '' ORDER BY `name` ASC"); while($data = mysql_fetch_array($category)){ $array[] = $data; $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".'<br/>'; while($data2 = mysql_fetch_array($subCategory)){ if($data2['mainCat']!=""){ $array[] = $data2; } } }
答案 2 :(得分:0)
请尝试下面的内容:
SELECT t1.id, t1.name
FROM tablename t1
LEFT JOIN tableName t2
ON t2.name = t1.mainCat