Объединить данные из 2 таблиц в MySQL - PullRequest
0 голосов
/ 13 января 2020

У меня есть структура папок с двумя таблицами, подобная этой, в 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    |

. Он выберет все папки и файлы с таким столбцом

1 Ответ

1 голос
/ 13 января 2020

Если я понимаю, что вы хотите, я думаю, вам нужно что-то вроде этого:

SELECT folder_id, folder_name, 
    NULL AS document_id, NULL as document_status, NULL as document_name
FROM folders 
WHERE folder_parent_id = your_number AND is_active = 1

UNION

SELECT NULL as folder_id, NULL as folder_name,
    document_id, document_status, document_name
FROM documents 
WHERE folder_id = your_number AND is_active = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...