1

テーブルの「フォルダ」と「ファイル」が多すぎるとしましょう

Folderに2つの列IDとFolderIDを持たせます

Folder
------
ID int primary  <-.
FolderId Int    --`

folderIdは、フォルダーテーブルのId列との内部関係です。

ファイルテーブルには2つの列IDとFolderIdがあります

File
-----
Id int primary
FolderID          --->Folder.ID

FolderIdは、フォルダーテーブルのID列と外部関係を持っています

**Folder**
Id      FolderId
---     --------
1       NULL
2       1
3       NULL
4       2
5       2

**file**
Id      FolderID
---     ---------
1        2
2        3
3        2
4        4
5        5  

あなたが状況を理解したことを願っています、

私たちが知っているように、フォルダ内とフォルダ内に多くのフォルダを作成できます(再帰的)

ここで、フォルダーid = 2とそのサブフォルダー内にあるすべてのファイル(id)のリストを取得します(必要なファイルIDは3,4,5です)。

再帰関数を使用すると、これを機能させることができますが、SQLでより効率的に行う方法

4

1 に答える 1

1

この質問への答えを見てください。 MySQLと同等の事前接続で接続

他のデータベース(Oracleなど)CONNECT BYでは、SQLステートメントでaを使用できますが、MySQLはselectでの再帰をサポートしていないようです。

于 2012-10-25T15:38:33.780 に答える