Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Produkty z kategorii i podkategorii
arturpiotrowski
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 6.12.2016

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


Witam jestem tu nowy i dopiero zaczynam swoją przygodę z PHP, HTML ogarniam już chyba całkiem dobrze więc pora wejść na wyższy poziom i pomyśleć o PHP/MySQL

Mam przykładową bazę ze strukturą tabel
  1. CREATE TABLE `kategorie` (
  2. `kategoria_id` smallint(5) UNSIGNED NOT NULL,
  3. `rodzic_id` smallint(5) UNSIGNED NOT NULL DEFAULT '1',
  4. `kategoria` varchar(60) NOT NULL
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  6. INSERT INTO `kategorie` (`kategoria_id`, `rodzic_id`, `kategoria`) VALUES
  7. (1, 0, 'Produkty'),
  8. (2, 1, 'AGD'),
  9. (3, 1, 'RTV'),
  10. (4, 2, 'Miksery'),
  11. (5, 2, 'Tostery'),
  12. (6, 3, 'Telewizory'),
  13. (7, 3, 'Kina domowe');
  14. CREATE TABLE `kat_produkty` (
  15. `id` int(10) UNSIGNED NOT NULL,
  16. `kategoria_id` smallint(5) UNSIGNED NOT NULL,
  17. `produkt_id` int(10) UNSIGNED NOT NULL
  18. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  19. INSERT INTO `kategorie_produkty` (`id`, `kategoria_id`, `produkt_id`) VALUES
  20. (1, 4, 4),
  21. (2, 5, 5),
  22. (3, 6, 1);
  23. (4, 6, 2);
  24. CREATE TABLE `produkty` (
  25. `produkt_id` int(10) UNSIGNED NOT NULL,
  26. `nazwa` varchar(255) NOT NULL
  27. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  28. INSERT INTO `produkty` (`produkt_id`, `nazwa`) VALUES
  29. (1, 'Produkt 1'),
  30. (2, 'Produkt 2'),
  31. (3, 'Produkt 3'),
  32. (4, 'Produkt 4'),
  33. (5, 'Produkt 5');

Jak powinno wyglądać zapytanie abym mógł wyciągnąć z tabeli produktów wszystkie produkty z kategorii "AGD" i podkategorii dla których id rodzica to id kategorii "AGD"?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





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




No patrz, nie moge znalezc... domeny na ktorych to kiedys bylo teraz sa juz nieaktywne :/

Podam ci w skrocie idee, zlekka zmodyfikowana przeze mnie:
W tabeli drzewka IP nie masz id rodzica. Zamiast tego masz pelna sciezke od rodzica do dziecka.
Czyli jesli masz kategorie
kat1(id 1) ktora ma kategorie kat2(id 2) ktora ma kategorie kat3(id 3) to tak beda wygladaly rekordy:

ID, NAME, IP, LEVEL
1, kat1, 1., 0
2, kat2, 1.2., 1
3, kat3, 1.2.3., 2
Jak widzisz sciezka wyglada jak adres IP stad nazwa
Ja do sciezki dodaje tez ID aktualnego rekordu - mi to pomagalo w wyszukiwaniach
Dodaje rowniez LEVEL ktory mowi o stopnu zagniezdzenia elementu - rownie pomocne w pewnych przypadkach.
Ja rowniez na koniec kazdej sciezki dodaje kropke - tez mi to ulatwialo wyszukiwania

I teraz jak chcesz znalezc wszystkie kategorie nalezace do kat1 to dajesz:

select * from categories where IP like '1.%';
i juz.
Oczywiscie na pole IP musi byc zalozony index

Jak chcesz znalezc wszystkie nalezace do kat2 to dajesz
select * from categories where IP like '1.2.%';

To tak w skrocie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie
- arturpiotrowski   [MySQL]Produkty z kategorii i podkategorii   6.12.2016, 17:47:55
- - Niree   [PHP] pobierz, plaintext CREATE TABLE `kat_produkt...   6.12.2016, 18:19:59
- - arturpiotrowski   Rozumiem że myślisz o wrzuceniu kategorii i podkat...   6.12.2016, 18:45:16
- - rad11   Sprobuj to: [PHP] pobierz, plaintext  Select ...   6.12.2016, 18:51:13
- - arturpiotrowski   Czy to co dopisałem wymaga aby zrobić to rekursywn...   6.12.2016, 19:13:56
- - rad11   Tak do tego będziesz musiał użyć funkcji rekursywn...   6.12.2016, 19:21:34
- - nospor   Zacznij od przygotowania poprawnej struktury drzew...   6.12.2016, 20:03:45
- - Niree   [HTML] pobierz, plaintext Rozumiem że myślisz o wr...   6.12.2016, 21:35:02
- - nospor   CytatPrzy wyświetlaniu patrzysz, czy w danej kolum...   6.12.2016, 21:38:21
|- - Niree   Cytat(nospor @ 6.12.2016, 21:38:21 ) ...   6.12.2016, 21:42:34
- - nospor   CytatRobiłbyś osobne kolumny do danego modułu, czy...   6.12.2016, 21:48:29
- - Niree   Chyba przez Ciebie zacznę pić.   6.12.2016, 21:56:25
- - nospor   Jesli miedzy kieliszkami bedziesz studiowal podsta...   6.12.2016, 22:00:38
- - arturpiotrowski   nospor, dziękuję znalazłem to: http://www.eioba.pl...   6.12.2016, 22:17:56
- - nospor   Bo wybrales calkiem trudna implementacje drzewa. ...   6.12.2016, 22:34:37
- - arturpiotrowski   nospor, a mógłbyś podrzucić jakiś link z prostszą ...   6.12.2016, 22:56:37
- - nospor   No patrz, nie moge znalezc... domeny na ktorych to...   6.12.2016, 23:40:23
- - arturpiotrowski   Dzięki dobry człowieku, ta wersja wygląda na znacz...   7.12.2016, 11:42:29
- - nospor   CytatDobrze myślę że do dodania kategorii potrzeba...   7.12.2016, 13:56:21
- - arturpiotrowski   Jesli wezme zwyklym delete bez sprawdzenia czy usu...   7.12.2016, 14:55:35
- - nospor   Rozumiem. Mozesz dodac jeszcze mimo wszystko pole ...   7.12.2016, 15:20:45
- - arturpiotrowski   Już rozumiem chyba wszystko o co pytałem wcześniej...   8.12.2016, 10:32:20
- - nospor   Nie koniecznie. Pobierasz wpierw ID wszystkich szu...   8.12.2016, 11:02:10


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: 17.10.2025 - 05:59