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

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

2. Виталий (04.02.2013 / 17:46)
а в чем проблема заключается? два запроса в бд сначала к таблице с папками, потом с файлами. И к запросу допилить
ORDER BY `name`


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


4. TRAIL (05.02.2013 / 17:11)
2. free, будет постраничная навигация) это точно не вариант

5. Саня (05.02.2013 / 18:24)
Если память не изменяет что то подобное уже делал, как уже говорилось выше в 2 запроса, но тебе надо знать сколько у тебя в обоих таблицах записей(по уму все это кешируется), просто матиматикой по велоколесить из какой таблицы сколько данных брать и все, + в том что если папок или файлов больше 10, например 9 папок и 100 файлов или что то вроде, то на второй и последующей странице уже не придется трогать таблицу с папками(как например в третьем посту), ну или наоборот, а это уже прирост в производительности, думаю ясно о чем я, рассписал как мог)

6. ZaRiN (05.02.2013 / 18:47)
Храни все в одной таблице, зачем эти лишние телодвижения?

SELECT * FROM `files` WHERE `parent_id`=$id ORDER BY `type`,`name`


7. TRAIL (05.02.2013 / 18:58)
6. Жадный лепрекон, так и сделаю. спасибо за советы)

8. Саня (05.02.2013 / 18:59)
Индекс только на `type` прицепи)

URL: https://visavi.net/topics/36565