Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Ograniczenie pętli
adam882
post
Post #1





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

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


Witam

Posiadam tabelę "kategorie" o takiej strukturze: id | nazwa | ile | parent. Kategorie główne mają "parent"=0, natomiast podkategorie zawierają w "parent", id kategorii głównej. Nie mam pomysłu jak to zrobić, aby ograniczyć wszystko do jednej pętli.

Obecnie wygląda to mniej więcej tak:
  1. <?php
  2. $q=mysql_query('SELECT id, nazwa FROM kategorie WHERE parent=0'); //Pobiera kategorię główną bez rodzica
  3. while($r=mysql_fetch_array($q))
  4. {
  5. echo '<b>Kategoria: '.$r['nazwa'].'</b><br />';
  6. $q2=mysql_query('SELECT * FROM kategorie WHERE parent='.$r['id'].''); //Pobiera podkategorie rodzica
  7. while($r2=mysql_fetch_array($q2))
  8. {
  9. echo 'Podkategoria: '.$r2['nazwa'].' ('.$r2['ile'].')<br />';
  10. }
  11. echo '<br />';
  12. }
  13. ?>


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
adam882
post
Post #2





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

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


Z pomocą ułożyłem potrzebne zapytanie mysql:
  1. SELECT k.nazwa AS cat_name, p.id AS pid, p.nazwa AS pod_name, p.ile AS pod_ile,
  2. (SELECT SUM(c.ile) FROM kategorie c WHERE c.parent=k.id) AS num
  3. FROM kategorie k INNER JOIN kategorie p ON (p.parent=k.id) ORDER BY k.nazwa

które wrzucone w pętle razem z warunkami wyświetla się mniej więcej tak:
Nazwa kategorii (5)
- podkategoria (3)
- podkategoria (2)

Zastanawia mnie tylko, czy takie zapytanie nie obniży wydajności. Trzeba będzie też chyba nałożyć indeksy na [parent]

Ten post edytował adam882 26.06.2011, 13:58:07
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 23:52