Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nested sets + liczenie plikow nalezacych do danego wezla
Forum PHP.pl > Forum > Bazy danych
lukaskolista
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.
Mion
Skro w tebeli files przechowujesz dir_id co jak sądzę jest kluczem obcym do tabeli kategorii wykonaj
  1. SELECT COUNT(*) AS ile FROM files GROUP BY dir_id;
lukaskolista
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.