Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Wyliczenie poziomu danej
Randallmaster
post
Post #1





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


Witam,

Mam problem z wyliczeniem na którym poziomie znajduje się zmienna.

Przykład tabeli:

id | parent
|
1 | 0
2 | 1
3 | 2
4 | 3

0 - > główne
id[4] -> znajduje się na 3 poziomie ma nad sobą 3 2 1

jak taki przykład wyliczyć za pomocą php lub sql ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jestes w stanie jeszcze poprawic te strukture? Jak tak, to zainteresuj sie strukturami drzewiastymi, np. drzewka IP.

Jak nie, to niestety musisz w rekurencji leciec zapytaniami po kolei co jest nieoptymalne niesamowicie.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Albo zassać wszystko, wpakować do statica, globala czy innego Singletona i latać w skrypcie pętlami
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
i latać w skrypcie pętlami
Predzej też rekurencją.
Zas zassanie wszystkiego przy duzej liczbie danych będzie jeszcze "lepsze " niz rozwiązanie co zaproponowalem. Juz widzialem pare razy takie kwiatki a potem strona sie ladowała 2 godziny....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Nie sądzę żeby kolega miał 100xxx mln rekordów wink.gif A nawet jak i pobierze tylko id i parent_id to da radę. Tylko to trzeba sobie gdzieś trzymać, ew. cache czy cóś smile.gif
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie trzeba milionow, wystarczy kilkadziesiat tysiecy. Ostatnio przez taką właśnie tabele stronka u pewnej osoby muliła aż miło.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Znam te objawy. Ale to jest cena za nieumiejętne dobieranie rozwiązania do problemu wink.gif
Go to the top of the page
+Quote Post
Randallmaster
post
Post #8





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


Właśnie pewną tabelę chcę przerobić na drzewko ip.
Zrobiłem może się komuś przyda:

  1. function nazwa_funkcji($parent, $return){
  2. $id = $this->GetData("nazwa_tabeli", $parent ,"id"); //pobranie danych - własna funkcja
  3. $return .= $id['id'].',';
  4. if($id['parent'] >= 0){
  5. $return = $this->nazwa_funkcji($id['parent'], $return);
  6. }
  7. return $return;
  8. }


przerobione na forum smile.gif
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: 20.08.2025 - 12:33