Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nested sets + liczenie plikow nalezacych do danego wezla
lukaskolista
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Mion
post
Post #2





Grupa: Zarejestrowani
Postów: 105
Pomógł: 6
Dołączył: 7.03.2005

Ostrzeżenie: (0%)
-----


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;
Go to the top of the page
+Quote Post
lukaskolista
post
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 03:55