![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam problem z policzeniem ilosci plikow nalezacych do danego katalogu. Struktura tabel dirs i files wygalda tak:
dirs: dir_id parent_id lft rgt name files: file_id dir_id name drzewko katalogow pobieram nastepujacym zapytaniem: SELECT node.*, (COUNT(parent.dir_id) - 1) AS depth FROM dirs AS node, dirs AS parent WHERE (node.lft BETWEEN parent.lft AND parent.rgt) GROUP BY node.dir_id ORDER BY node.lft chcialbym policzyc dla kazdego katalogu ilosc plikow z tabeli files, ktore do neigo naleza. Probowalem wszystkiego, co przyszlo mi do glowy, ale w najlepszym wypadku struktura drzewa byla zaburzona (glebokosci wezlow byly zle). Prosze o pomoc w rozwiazaniu tego problemu. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 6 Dołączył: 7.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
dzieki, cale zapytanie wyglada tak:
SELECT node.*, (COUNT(parent.dir_id) - 1) AS depth, (SELECT COUNT(*) FROM files WHERE files.dir_id = node.dir_id GROUP BY dir_id) AS files_count FROM dirs AS node, dirs AS parent WHERE (node.lft BETWEEN parent.lft AND parent.rgt) GROUP BY node.dir_id ORDER BY node.lft Ten post edytował lukaskolista 30.11.2010, 10:48:27 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 03:55 |