2

私は、ユーザーがファイルをフォルダーに整理できるメディアライブラリに取り組んでいます。所属するフォルダの親IDを追跡するファイルのテーブルがあります。親IDも許可するフォルダテーブルもあるので、フォルダを別のフォルダに置くことができます。問題は、親フォルダーに含まれるファイルとフォルダーの両方をリストするビューを表示したい場合に発生します。この時点まで、私は安価な方法を取り、フォルダ、次にファイルに対して2つの個別のクエリを実行し、次に次々にリストしました。ただし、リストが長くなったので(ページ付けしたいので)、クエリを制限する必要があります。2つのクエリを組み合わせて、ループできるファイルとフォルダーの1つのデータ配列を取得するにはどうすればよいですか?

たとえば、私はこれを行うことができます:

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

そのフォルダ内のすべてのファイルのリストが表示されます。

次にこれ:

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

これで、すべての子フォルダーのリストが表示されます。

2つを組み合わせて、ループする単一のデータ配列を作成する方法はありますか?

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 に答える