Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] Pobieranie wszystkich rodziców kategorii
netvalue
post
Post #1





Grupa: Zarejestrowani
Postów: 199
Pomógł: 2
Dołączył: 9.06.2008

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


Hej

Mam typowo tabelkę kategorii:
  1. id | id_parent | name
  2. 1 | 0 | kategoria
  3. 2 | 0 | kategoria 2
  4. 3 | 1 | subkategoria
  5. 4 | 3 | ostatnia podkategoria
  6. 5 | 3 | ostatnia podkategoria 2
  7.  
  8.  


teraz jak stworzyć stworzyć zapytanie aby pobrać wszystkie kategorie nadrzędne dla kategorii o id 4 i 5.
Tak żeby też nie było zdublowania kategoria o id 3 , do której należą kategorie 4 i 5.


Docelowo chce uzyskać drzewo

-kategoria
--subkategoria
---ostatnia podkategoria
---ostatnia podkategoria 2

obecnie mam takie zapytanie:
  1. SELECT T2.id_category, T2.name
  2. FROM (
  3. SELECT
  4. @r AS _id,
  5. (SELECT @r := id_parent FROM category WHERE id_category = _id) AS id_parent,
  6. @l := @l + 1 AS lvl
  7. FROM
  8. (SELECT @r := 4, @l := 0) vars,
  9. category h
  10. WHERE @r <> 0) T1
  11. JOIN category T2
  12. ON T1._id = T2.id_category
  13. ORDER BY T1.lvl DESC


i otrzymuje drzewko w górę ale tylko dla podkategorii ID 4. Moglbym wykonac ponownie te zapytanie dla ID 5 ale otrzymam znowu drugie drzewko...
chyba ze bym wykonal dwa takie zapytania dla kazdego ID odzielnie (4,5) wrzucil rezultaty do tablicy php i nastepnie polaczyl te tablice ze sobą z wykluczeniem zdublowanych id kategorii..
hmmm jest to jakies rozwiazanie ale chyba malo optymalne robic odzielne takie zapytania dla kazdego ID odzielnie biorac pod uwage ze moze byc ich nawet 100

Ten post edytował netvalue 28.08.2014, 14:27:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Pyton_000
post
Post #2





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

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


Znień strukturę jeżeli to możliwe na nested set
Go to the top of the page
+Quote Post
netvalue
post
Post #3





Grupa: Zarejestrowani
Postów: 199
Pomógł: 2
Dołączył: 9.06.2008

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


teraz niesety na tym etapie to juz nie mozliwe
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





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

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


No to pobieraj wszystkie kategorie hurtem, pakuj w cache i w skrypcie sobie to przeleć, będzie szybciej, łatwiej i mniej problemów.
Go to the top of the page
+Quote Post
netvalue
post
Post #5





Grupa: Zarejestrowani
Postów: 199
Pomógł: 2
Dołączył: 9.06.2008

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


Python jest to co prawda jakies rozwiazanie ale ponad tych kategorii jest za duzo zeby tak je obrabiac
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





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

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


Jaka baza takie rozwiązania. Zamiast kombinować w SQL szybciej i czytelniej zrobisz to w PHP

PS. A ile masz tych kategorii łącznie? 1k?

Ten post edytował Pyton_000 29.08.2014, 17:05:09
Go to the top of the page
+Quote Post
netvalue
post
Post #7





Grupa: Zarejestrowani
Postów: 199
Pomógł: 2
Dołączył: 9.06.2008

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


około 110k

Ten post edytował netvalue 29.08.2014, 20:51:20
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





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

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


Zawsze możesz pobrać tylko ID i parent_id i przemielić. a potem dociągasz dane opisowe dla danych ID
Go to the top of the page
+Quote Post
nospor
post
Post #9





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




A zaglebienie do jakiego max poziomu dochodzi?


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

"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
netvalue
post
Post #10





Grupa: Zarejestrowani
Postów: 199
Pomógł: 2
Dołączył: 9.06.2008

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


Cytat(nospor @ 1.09.2014, 09:05:59 ) *
A zaglebienie do jakiego max poziomu dochodzi?


trzy poziomy max zawsze
Go to the top of the page
+Quote Post
nospor
post
Post #11





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




To z racji, ze masz tak skaszanianioną te strukture, to obrabiaj to w php.

Najpierw pobierz ostatnią kategorie, potem w php pobierz jej rodzica, potem pobierz rodzica rodzica.. Będą to raptem 3 zapytania i będie to dzialalo w miare szybko.


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

"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

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: 19.08.2025 - 19:43