Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Структура каталогов из списка путей файлов / 2 сообщений из 2, страница 1 из 1
28.09.2013, 17:55
    #38410747
Wyfinger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура каталогов из списка путей файлов
Добрый день,

возможно тема всплывала и я просто не умею пользоваться поиском и все такое прочее.., но всеже.

есть таблица, в которой хранятся пути и параметры файлов:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE [tblRawFiles] (
	[_ID] integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
	[strFileName] nvarchar(1024), 
	[intFileTime] int, 
	[intFileCRC] int, 
	[intFileSize] int
)

4033	PHP\HTMLTest\docs\build\node_modules\hogan.js\test\index.js	1093711373	-2006668041	28414
4034	PHP\HTMLTest\docs\build\node_modules\hogan.js\test\mustache.js	1093711373	-187884223	2827
4035	PHP\HTMLTest\docs\build\node_modules\hogan.js\test\spec\Changes	1093711373	-1111152633	1042
4036	PHP\HTMLTest\docs\build\node_modules\hogan.js\test\spec\Rakefile	1093711373	-932177747	733



Есть другая таблица для дерева в которой почти то же самое, только есть поле ParentID и хранится только имя файла без пути:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE [tblFiles] (
	[_ID] integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
	[intArchiveID] int, 
	[intParentID] int, 
	[strFileName] nvarchar(255), 
	[intFileTime] int, 
	[intFileCRC] int, 
	[intFileSize] int, 
	[intSubFiles] int
)




Возможно ли сформировать из данных первой таблицы дерево во второй таблице только SQL запросом?
Причем необходимо учитывать, что каталоги в таблице [tblFiles] уже могут быть записаны, а вот файлы с одинаковыми именами могут повторяться (разные версии файлов).

Мои мысли:
1. Сортируем [tblRawFiles] по [strFileName], так сначала будут каталоги, а уж потом файлы этого каталога.
2. Каталог определяется элементарно:
Код: sql
1.
(([intFileCRC] = 0) and ([intFileSize] = 0)) as [boolIsDir]


3. "Между каталогами" в списке могут быть только файлы, "принадлежащие" последнему каталогу.

Если мыслить в терминах нормального программирования:
1. Проходим по отсортированной таблице сверху вниз;
2a. Если найден каталог - проверим есть ли он в [tblFiles], если есть - запомним его [_ID], если нет - добавить;
2b. Если найден файл - добавить его в [tblFiles] с запомненным ParentID

Отдельный вопрос как проверить наличие папки в [tblFiles], похоже это нужно делать рекурсивно.

Возможно ли реализовать такой функционал на SQL?, если да - жду Ваших мыслей.
...
Рейтинг: 0 / 0
09.10.2013, 08:55
    #38421072
Wyfinger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура каталогов из списка путей файлов
Судя по количеству ответов это не возможно.

Реализовал все "силами" хостовой программы.
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Структура каталогов из списка путей файлов / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]