gpt4 book ai didi

mysql - 如何选择以下内容?

转载 作者:行者123 更新时间:2023-11-30 23:38:46 26 4
gpt4 key购买 nike

我有一个表 DOCUMENTS 和一个表 FOLDERS

FOLDERS
ID
lft
rgt

DOCUMENTS
ID
folderID -> FOLDERS(ID)
title

因此,我们这里有一个任意深度的文件夹树(嵌套集)。每个文件夹可以包含任意数量的文档。

选择某个文件夹下的所有文档的最有效方法是什么?也就是说,我不仅要选择文件夹中的文档,还要选择该文件夹的子文件夹中的文档。

编辑:示例数据以使事情更清楚:

FOLDERS
ID LFT RGT
1 1 10
2 2 5
3 3 4
4 6 7
5 8 9

这表示这样的文件夹结构...

       1
2 4 5
3

其中 2、4、5 是 1 的 child ,3 是 2 的 child

现在...

假设 DOCUMENTS 具有以下数据...

DOCUMENTS
ID FolderID Title
1 5 Doc 1
2 3 Doc 2
3 2 Doc 3

给定一个文件夹的 ID,我想选择该文件夹中的所有文档,以及该文件夹的子文件夹中的所有文档。因此,例如给定的文件夹 ID 为 2,SELECT 将返回文档 2 和 3

(提前)感谢您的帮助

最佳答案

首先,您需要从文件夹表中获取 lftrgt 值:

select lft, rgt from folders where id = 2;

...然后使用这些来识别存在于该节点或其子节点中的文档:

select d.* from documents d left join folders f on f.id = d.folderID where f.lft >= 2 and f.rgt <= 5;

您可以在您的代码中分别调用这两个查询,您可以将它们与子查询结合起来,或者您可以编写一个存储过程来结合它们。

关于mysql - 如何选择以下内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5226636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com