[英]Merge data from 2 tables in MySQL
我在 MySQL 中有 2 個這樣的表文件夾結構:
文件夾表:
|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
則表示該文件夾位於目錄的根目錄中。 至於文檔,它可以在另一個文件夾中,也可以在根目錄中( folder_id
為空)。 我想要實現的是獲得這樣的選擇數據:
例如,如果 folder_parent_id 為 NULL AND 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 AND 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 |
它將選擇所有具有類似列的文件夾和文件
如果我明白你想要什么,我認為你需要這樣的東西:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.