Папки и файлы, как организовать вывод
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