2

我正在开发一个允许用户将文件组织到文件夹中的媒体库。我有一个文件表,用于跟踪它所属文件夹的父 ID。我还有一个文件夹表,它也允许父 id - 所以一个文件夹可以在另一个文件夹中。当我想显示一个列出父文件夹包含的文件和文件夹的视图时,问题就出现了。到目前为止,我已经采取了廉价的方式,刚刚对文件夹进行了 2 次单独的查询,然后是文件 - 然后一个接一个地列出。但是,既然列表已经变长了——我想对它们进行分页——所以我需要限制我的查询。如何结合 2 个查询来获得一个可以循环遍历的文件和文件夹数据数组?

例如,我可以这样做:

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

这将为我提供该文件夹中所有文件的列表。

然后这个:

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

这会给我一个所有子文件夹的列表。

有没有办法可以将两者结合起来给我一个循环的数据数组?

4

1 回答 1

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
于 2012-06-23T17:12:42.567 回答