Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] Kategorie - optymalnie?
sniver
post 23.04.2010, 10:43:34
Post #1





Grupa: Zarejestrowani
Postów: 159
Pomógł: 5
Dołączył: 31.08.2007

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


Pierwowzorem w kategoriach N zagłębienia dla mnie są duże serwisy takie jak allegro, amazon, beltal, alibaba, ebay itp.

Chciałem stworzyć coś co będzie działać w/g zasad jakie panują na allegro. Udało mi się zmontować następujące rzeczy:

Struktura tabeli w bazie danych:
  1. CREATE TABLE IF NOT EXISTS `categories` (
  2. `CAT_Id` int(11) NOT NULL AUTO_INCREMENT,
  3. `PARENT_Id` int(11) NOT NULL DEFAULT '0',
  4. `CAT_Name` varchar(155) NOT NULL,
  5. `CAT_Url` varchar(75) NOT NULL,
  6. `CAT_Description` varchar(255) NOT NULL,
  7. `CAT_Sort` int(11) NOT NULL DEFAULT '0',
  8. `CAT_Counter` int(11) NOT NULL,
  9. `CAT_Active` int(11) NOT NULL DEFAULT '1',
  10. PRIMARY KEY (`CAT_Id`),
  11. KEY `INDEX_GLOWNY` (`CAT_Id`,`PARENT_Id`,`CAT_Counter`,`CAT_Active`) USING BTREE,
  12. KEY `SORT` (`PARENT_Id`,`CAT_Sort`)
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=106 ;



Oraz zapytanie które obsługuje:
  1. SELECT
  2. `CAT_Id` AS `id`,
  3. `PARENT_Id` AS `parent`,
  4. `CAT_Name` AS `name`,
  5. `CAT_Url` AS `url`,
  6. `CAT_Counter` AS `licznik`
  7.  
  8. FROM
  9. `categories` AS `c`
  10.  
  11. WHERE
  12. (
  13. (`c`.`CAT_Active` = 1)
  14. AND (`c`.`CAT_Counter` > 0)
  15. )
  16. AND (
  17. (`c`.`CAT_Id` = {#ID})
  18. OR (`c`.`PARENT_Id` = {#ID})
  19. OR (`c`.`PARENT_Id` = (
  20. SELECT
  21. `c2`.`CAT_Id`
  22. FROM
  23. `categories` AS `c2`
  24. WHERE
  25. (`c2`.`CAT_Id` = (
  26. SELECT
  27. `c3`.`PARENT_Id`
  28. FROM
  29. `categories` AS `c3`
  30. WHERE
  31. (`c3`.`CAT_Id` = {#ID})
  32. LIMIT 1
  33. )
  34. )
  35. LIMIT 1
  36. )
  37. )
  38.  
  39. OR (`c`.`PARENT_Id` = (
  40. SELECT
  41. `c3`.`PARENT_Id`
  42. FROM
  43. `categories` AS `c3`
  44. WHERE
  45. (`c3`.`CAT_Id` = {#ID})
  46. LIMIT 1
  47. )
  48. )
  49. )
  50.  
  51. ORDER BY
  52. `c`.`PARENT_Id` ASC,
  53. `c`.`CAT_Sort` ASC


W miejscu gdzie występuje ciąg {#ID} należy wprowadzić wybraną kategorie...

Licznik jest wyliczany cyklicznie w cronie raz na kilka minut...

Póki co chcę się dowiedzieć co sądzicie o takim czymś - dobrze czy źle?


--------------------
Go to the top of the page
+Quote Post

Posty w temacie
- sniver   [SQL] Kategorie - optymalnie?   23.04.2010, 10:43:34
- - nospor   zastosowana przez ciebie metoda jest najgorsza ze ...   23.04.2010, 10:46:30
|- - phpion   Cytat(nospor @ 23.04.2010, 11:46:30 )...   23.04.2010, 11:13:36
- - sniver   wzorować czyt. efekt końcowy no bo jak sie tu ina...   23.04.2010, 10:47:41
- - Wykrywacz   Myślę że ktokolwiek kto będzie czekał na wynik teg...   23.04.2010, 10:53:33
- - nospor   @phpion moze i ma parentId. Ale na pewno nie ma ty...   23.04.2010, 11:15:08
- - phpion   Może to dobry moment na debatę sam jestem jednak ...   23.04.2010, 11:19:11
- - nospor   ok, pierwszy lepszy przyklad z brzegu: Masz produk...   23.04.2010, 11:24:55
- - sniver   ale w tym przypadku ten kod ma tak nie działać g...   23.04.2010, 11:28:11
- - phpion   może coś bardziej życiowego? Nie spotkałem się jes...   23.04.2010, 11:29:12
- - sniver   Sam box na stronie z listą "aktualnych" ...   23.04.2010, 11:45:44
- - nospor   @phpion "niezyciowy" problem? http://al...   23.04.2010, 11:56:53
|- - phpion   Cytat(nospor @ 23.04.2010, 12:56:53 )...   23.04.2010, 12:45:02
- - sniver   znalazłem ciekawą opowieść na ten temat http://b...   23.04.2010, 12:10:03
- - nospor   Cytatale w praktyce powiem czy lepiej sie to spraw...   23.04.2010, 12:13:51
- - sniver   hehehe...już przerobilem w głowie o co w tym chodz...   23.04.2010, 12:22:08
- - nospor   CytatJednak można ścieżkę zapisać do cache i późni...   23.04.2010, 12:55:19
- - phpion   W obu przypadkach można zastosować to samo rozwiąz...   23.04.2010, 13:02:35
- - nospor   Cytatchcąc przypisać produkt do kategorii 1.2.1 za...   23.04.2010, 13:07:33
- - phpion   pewnie masz rację, aż sobie poczytam o tych drzewk...   23.04.2010, 13:09:47
- - nospor   minus drzewek IP... w porównaniu z parentID nie wi...   23.04.2010, 13:16:32
- - 6nom   http://www.depesz.com/various/various-sqltrees.php   23.04.2010, 13:56:40
- - Mchl   A jeśli ma się możliwość, to najlepiej z drzewkami...   23.04.2010, 14:17:04
- - cojack   http://www.depesz.com/index.php/2008/04/11...n-tre...   23.04.2010, 15:20:03
- - sniver   ma ktoś gotowy kod który przerobi parent id na te ...   23.04.2010, 15:21:11
|- - aio   Cytat(sniver @ 23.04.2010, 16:21:11 )...   25.04.2010, 23:46:54
- - cojack   Ja bym poprosił o źródło pochodzenia tego przykład...   26.04.2010, 08:38:03
|- - aio   Cytat(cojack @ 26.04.2010, 09:38:03 )...   26.04.2010, 10:19:01
- - cojack   Hmmm to ja jeszcze poproszę funkcje do przesuwania...   26.04.2010, 15:53:42
|- - aio   Cytat(cojack @ 26.04.2010, 16:53:42 )...   26.04.2010, 22:01:08
- - sniver   Napisałem bardzo byle jakąś procedure (można odpal...   27.04.2010, 07:04:47


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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 14:42