我可以将2个查询合并为来自2个不同表的一个数据数组吗?

时间:2012-06-23 17:08:43

标签: mysql sql

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

例如,我可以这样做:

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

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

然后这个:

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

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

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

1 个答案:

答案 0 :(得分: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