2012-06-23 44 views
2

我正在研究一個讓用戶將文件組織到文件夾中的媒體庫。我有一個跟蹤它所屬文件夾的父ID的文件表。我也有一個文件夾表,也允許一個父母的ID - 所以一個文件夾可以在另一個文件夾。當我想要顯示列出父文件夾包含的文件和文件夾的視圖時,問題就變成了。直到這一點,我已經採取了廉價的方式,並已完成2個單獨的查詢文件夾,然後文件 - 然後只是一個接一個地列出。但是,現在列表已經變長 - 我想分頁 - 所以我需要限制我的查詢。我如何組合2個查詢來獲得一個可以循環的文件和文件夾的數據數組?我可以將2個查詢合併到2個不同表中的一個數據數組中嗎?

例如,我可以這樣做:

SELECT * 
FROM `files` LEFT JOIN `folders` ON `files`.`folder_id` = `folders`.`id` 
WHERE `folders`.`id` = 198 

這會給我該文件夾中的所有文件的列表。

那麼這個:

SELECT * FROM `folders` WHERE `parent` = 198 

這會給我所有子文件夾的列表。

有沒有一種方法可以將兩者結合起來給我一個單一的數據數組來循環?

回答

1

嘗試這樣:

SELECT id_file, name, 'file' as `type` 
FROM `files` 
LEFT JOIN `folders` ON `files`.`folder_id` = `folders`.`id` 
WHERE `folders`.`id` = 198 

UNION 

SELECT id_folder, name, 'folder' FROM `folders` WHERE `parent` = 198 

LIMIT 0, 20 
+0

他只需要設置字段別名在第一個查詢。 'union'之後的另一個查詢將使用與其別名相同的字段。 –

+0

完美。非常感謝您的快速回復。 –

+0

不客氣。我很高興它的工作。 –

相關問題