У меня есть структура папок с двумя таблицами, подобная этой, в MySQL:
папках Таблица:
|folder_id | folder_parent_id | folder_name | is_active|
+----------+------------------+-------------+----------+
| 1 | NULL | Desktop | 1 |
| 2 | NULL | Downloads | 1 |
| 3 | 2 | Movies | 1 |
| 4 | 2 | Musics | 0 |
| 5 | 1 | Trash | 1 |
| 6 | NULL | Systems | 1 |
| 7 | NULL | Locals | 0 |
документы Таблица:
|document_id | folder_id | document_name | document_status |
+------------+------------+---------------+-------------------+
| 1 | NULL | Invoice | approved |
| 2 | 3 | Subtitle | approved |
| 3 | 4 | Lyrics | not_approved |
| 5 | 6 | ReadME | approved |
| 6 | 2 | Script | approved |
Таким образом, в основном эти две таблицы предназначены для моей системы файлового менеджера, мне нужно извлечь папку и документы на основе folder_parent_id
, этот столбец должен помечать, если папка находится внутри другой папки, поэтому другая папка будет родительской. если folder_parent_id
равно NULL
, это означает, что папка находится в root каталога. Что касается документа, он может находиться в другой папке или в каталоге root (folder_id
имеет значение null). Чего я хочу добиться, так это получить выбранные данные, например:
, например, в случае, когда folder_parent_id равен NULL, а is_active = 1:
|folder_id | folder_name | document_id |document_status|document_name|
|----------+-------------+--------------+---------------+-------------+
| 1 | Desktop | NULL | NULL | NULL |
| 2 | Downloads | NULL | NULL | NULL |
| 6 | Systems | NULL | NULL | NULL |
| NULL | NULL | 1 | approved | Invoice |
, например, в случае folder_parent_id
равен 2 И is_active
= 1:
|folder_id | folder_name | document_id |document_status|document_name|
|----------+-------------+--------------+---------------+-------------+
| 3 | Movies | NULL | NULL | NULL |
| 4 | Musics | NULL | NULL | NULL |
| NULL | NULL | 6 | approved | Script |
. Он выберет все папки и файлы с таким столбцом