簡體   English   中英

合並來自 MySQL 中 2 個表的數據

[英]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_idNULL則表示該文件夾位於目錄的根目錄中。 至於文檔,它可以在另一個文件夾中,也可以在根目錄中( 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM