table : category
| id + category_name + parent_category_id |
| 1 | Flower | 0 |
| 2 | Wall Decor | 0 |
| 3 | Stylish Living| 0 |
| 4 | Mug | 0 |
| 5 | Sun Flower | 1 |
| 6 | Balsam | 1 |
我尝试首先列出排序顺序为父类别的数据,然后是子类别。
Flower
flower > Sun Flower
flower > Balsam
Wall Decor
Stylish Living
Mug
因为我尝试我不能像上面那样,下面是我得到的,花&gt; <太阳花和花>香脂应该在Flower下。
Flower
Wall Decor
Stylish Living
Mug
flower > Sun Flower
flower > Balsam
如果有人能给出一些想法或解决方案,我们非常感激。
答案 0 :(得分:1)
我有一个类似的结构,并使用以下的变体:
SELECT
p.category_id, p.category_name,
c.category_id, c.category_name
FROM category AS c
JOIN category AS p ON (c.parent_category_id = p.category_id)
ORDER BY p.category_name, c.category_name
你可能不得不修补你使用的那种JOIN(我知道应该/不应该生孩子的那种),但它会给你所有的孩子与他们的父母分类,按照你问的方式排序。 / p>
答案 1 :(得分:1)
我终于明白了你所追求的目标。这是SQL:
SELECT p.category_name as parent_category, '' as child_category
FROM category AS p
WHERE parent_category_id not in (select category_id from category)
UNION
SELECT p.category_name as parent_category, c.category_name as child_category
FROM category AS p
JOIN category AS c ON (c.parent_category_id = p.category_id)
ORDER BY parent_category, child_category
这是输出:
+-----------------+----------------+
| parent_category | child_category |
+-----------------+----------------+
| Flower | |
| Flower | Balsam |
| Flower | Sun Flower |
| Mug | |
| Stylish Living | |
| Wall Decor | |
+-----------------+----------------+
请注意,这仅适用于2级父子关系。如果你有三级并且需要在三列中显示它,那么它会变得更加复杂。
答案 2 :(得分:1)
SELECT category
FROM (
SELECT
IF(p.category_name is null, c.category_name, CONCAT(p.category_name, ' > ', c.category_name)) AS 'category'
FROM category c
LEFT JOIN category p ON c.parent_category_id = p.category_id
) s
ORDER BY category
...是我能想出的最好的结果。 See it working
答案 3 :(得分:0)
您很可能必须GROUP BY category_name
以及排序。
这也可能对你有所帮助 http://sqllessons.com/categories.html
答案 4 :(得分:0)
这是显示列表和具有三列id,名称,父ID
的类别子列表的最佳答案$con=mysqli_connect("localhost","root","","test");
$sql="select * from category where parent=0";
$result=mysqli_query($con,$sql);
echo "<ol>";
while($row=mysqli_fetch_array($result))
{
echo "<li >".$row['name']."</li>";
abc($row['id']);
}
function abc($id)
{
global $con;
$sql="select * from category where parent=$id";
$result=mysqli_query($con,$sql);
echo "<ol>";
while($row=mysqli_fetch_array($result))
{
echo "<li>".$row['name']."</li>";
abc($row['id']);
}
echo "</ol>";
}
echo "</ol>";
在此代码中,我们将父ID传递给函数和函数,然后再次调用自身以显示子类别