Папки и файлы, как организовать вывод

Печать RSS
244

Автор
Землянин
0
Значит , в базе будут две таблицы:
folders - id, parent_id, name
files - id, parent_id, name, size и т.д.
И нужно каким-то образом вывести данные из этих таблиц таким образом, чтобы первыми выводились данные из folders в алфавитном порядке, а после них уже уже files
Изменил: TRAIL (04.02.2013 / 13:34)

Землянин
0
а в чем проблема заключается? два запроса в бд сначала к таблице с папками, потом с файлами. И к запросу допилить
ORDER BY `name`
П

Пацак
0
Можно union, но тогда нужно, чтобы число полей было одинаковым и еще одна дополнительная колонка для сортировки. Примерно такой запрос
select `id`, `name`, 0, 0 as `sort` from `folders` 
union 
select `id`, `name`, `size`, 1 as `sort` from `files` 
order by `sort`,`name`
Изменил: Петр (05.02.2013 / 09:26)
Автор
Землянин
0
2. free, будет постраничная навигация) это точно не вариант
С

Землянин
0
Если память не изменяет что то подобное уже делал, как уже говорилось выше в 2 запроса, но тебе надо знать сколько у тебя в обоих таблицах записей(по уму все это кешируется), просто матиматикой по велоколесить из какой таблицы сколько данных брать и все, + в том что если папок или файлов больше 10, например 9 папок и 100 файлов или что то вроде, то на второй и последующей странице уже не придется трогать таблицу с папками(как например в третьем посту), ну или наоборот, а это уже прирост в производительности, думаю ясно о чем я, рассписал как мог)
Z

Клуракан
0
Храни все в одной таблице, зачем эти лишние телодвижения?

SELECT * FROM `files` WHERE `parent_id`=$id ORDER BY `type`,`name`
Автор
Землянин
0
6. Жадный лепрекон, так и сделаю. спасибо за советы)
С

Землянин
0
Индекс только на `type` прицепи)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск