Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skomplikowane zapytanie MySQL, Wyświetlanie tekstów z kilku poziomów podkategorii
armata12
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 18.12.2004

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


Witam, robię serwis z poradami.
Mam 4 poziomy kategorii i potrzebuje aby po kliknięciu w kategorię nr 1(najwyższego rzędu) wyświetliły mi się porady z wszystkich podkategorii włącznie z poziomem 4. Wspomnę, iż porady mogą być zapisywane w kategoriach rzędu 2,3 i 4. Przy czym czasami są tylko 2 poziomy.

Tabela kategorii:
id|cat_id|title

Tabela porad:
id|cat_id|user_id|title|.......

  1. SELECT DISTINCT a.id, a.user_id, a.photo, a.title, a.date, a.views, u.username
  2. FROM `advices` AS a, `users` AS u , `categories` AS c1, `categories` AS c2, `categories` AS c3
  3. WHERE ((c1.`cat_id`='$cat' AND c1.`id`=a.`cat_id`) OR
  4. (c1.`cat_id`='$cat' AND c1.`id`=c2.`cat_id` AND c2.`id`=a.`cat_id`) OR
  5. (c1.`cat_id`='$cat' AND c1.`id`=c2.`cat_id` AND c2.`id`=c3.`cat_id` AND c3.`id`=a.`cat_id`)) AND a.`user_id`=u.`id`


Powyższe zapytanie długo się wykonuje i pewnie im więcej będzie porad będzie co raz gorzej.
Proszę o pomoc z zoptymalizowaniu zapytania.

Będę wdzięczny za pomoc. Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bim2
post
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Pobierz sobie wszystkie kategorie od razu SELECT * FROM categories, i później stwórz z tego tablicę na zasadzie
  1. array('[id najwyzszej kategorii]' => array('id najwyzszej kategorii','podkategoria','podkategoria1'), 'podkategoria' => array('podkategoria','podkategoria1')...)

Wtedy odwołasz się
  1. $sql = 'SELECT * FROM advices WHERE cat_id IN ('.implode(',', $array[$cat]).')';


Ten post edytował bim2 26.09.2009, 17:34:58
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: 7.10.2025 - 21:11