相关疑难解决方法(0)

MySQL中的分层数据

我的MySQL数据库中有一种类似于树的东西.

我有一个包含类别的数据库,每个类别都有一个subcat.我将所有类别保存在一个表中,因此列如下所示:

*categories table*
id | name  | parent_id
1  | Toys  | 0
2  | Dolls | 1
3  | Bikes | 1
Run Code Online (Sandbox Code Playgroud)

我的数据库中的每个项目都分配给以下类别之一:

*items table*
item   | category_id
barbie | 2
schwinn| 3
Run Code Online (Sandbox Code Playgroud)

问题是,如果有人想要查看所有TOYS(父类别),从项目数据库中获取信息的最佳方法是什么?我知道如何做的事情的唯一方法

SELECT * 
FROM items 
WHERE category_id = 2 
JOIN SELECT * 
     FROM items 
     WHERE category_id = 3
     etc... 
Run Code Online (Sandbox Code Playgroud)

但是,如果我在Toys下有10个类别,那么我必须进行10次加入和查询.

有没有更好的方法来处理这个?

mysql join hierarchical-data

9
推荐指数
2
解决办法
1万
查看次数

MySQL不支持递归函数?为什么?从何时起?

我写了一个存储的FUNCTION,递归地调用自己.

但是,当我在查询中运行它时,我得到了这个无耻的错误:

错误:1424 SQLSTATE:HY000(ER_SP_NO_RECURSION)

消息:递归存储函数和触发器允许的.

"不允许"?
对.为什么我们不只是禁用WHILE循环,而我们在它呢?

我可以以任何方式启用递归函数吗?
我发现了一个错误报告,但是有任何变通方法吗?
我在Windows XP(XAMPP Server)上运行MySQL 5.1.41.

mysql recursion stored-procedures user-defined-functions stored-functions

6
推荐指数
1
解决办法
8413
查看次数

MySQL组按最低公共父ID

我有一个包含一个单一的表ID,AmountParent_ID.(实际上它有点复杂,但这是本例中的所有重要列).基本上我想要做的是将Amount列与最低公共父项(即父ID为NULL的那些)进行分组和求和.

ID  Amount  Parent_ID
1   100     NULL
2   150     1
3   50      1
4   75      3
5   25      4
6   125     NULL
7   50      6
8   50      7
9   100     8
Run Code Online (Sandbox Code Playgroud)

预期成绩:

ID  SUM
1   400
6   325
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它只会返回两个记录,即没有父级的记录,这意味着它们是顶级项目.Sum列是Amount递归所有子项的总和,因此ID= 1是1,2,3,4和5 ID的总和.= 6是6,7,8和9的总和.

mysql

3
推荐指数
1
解决办法
337
查看次数