![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 3 Dołączył: 18.08.2011 Skąd: Chrzanów Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Mam dwie tabele jedna to kategorie_produktow, druga zaś to produkty wyglądają tak: kategorie_produktow id | kategorie_produktow_id(FK) | nazwa 1 null Multimedia 2 1 Telewizory 3 1 Komputery 4 2 LCD 5 2 Plazma 6 3 Laptopy 7 3 Stacionarne oraz produkty id | kategorie_produktow_id(FK) | nazwa | opis | stan ... potrzebuje wykonać zapytanie które zwróci mi podkategorie z wybranej kategorii wraz z ilością produktów w wszystkich podkategoriach podkategorii kategorii ![]() np: wybieram kategorie Multimedia (1) zatem chciałbym aby wypisał mi kategorie: Telewizory | ilosc produktow w Telewizory, LCD, Plazma (uwzględniając wszystkie kategorie poniżej kategori Telewizory Komputery | komputery, laptopy, stacionarne jedyny pomysł jaki na to mam to robienie tego na raty - Najpierw pobranie danych o kategoriach - potem stworzenie drzewa listy podrzędnych id - a dopiero potem zapytanie SQL liczące ilość. Może jest na to jakiś inny lepszy sposób niż wykonywanie x zapytań? Ten post edytował zaajcu 13.11.2012, 14:39:16 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Ilość produktów w danej kategorii (czy to z uwzględnieniem jej podkategorii czy bez) możesz bez problemu trzymać w dodatkowej kolumnie, której wartość zmienia się o jeden przy dodaniu/usunięciu produktu - nie będziesz musiał każdorazowo zliczać produktów.
2. Jeżeli skorzystałbyś z bardziej odpowiedniego dla RDBMS-ów modelu drzewa, np. popularny nested set, mógłbyś w zasadzie wybrać wszystko czego potrzebujesz jedynym, trywialnym (przy uwzględnieniu punktu #1) zapytaniem. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 3 Dołączył: 18.08.2011 Skąd: Chrzanów Ostrzeżenie: (0%) ![]() ![]() |
OK faktycznie inny model drzewa byłby lepsze (problem tylko w tym że tego nie znam i musiał bym się tego nauczyć)
wpadłem jeszcze na jeden pomysł: dodać jeszcze jedną kolumnę z unikalnym nr (np SID) który składam by się z nr SID'u rodzica+własne id i np id | SID | nazwa 1 1 Multimedia 2 12 Telewizory 3 123 Plazma 4 124 LCD 5 1235 LG ... i wyszukiwać by można np tak:
i wówczas znajdzie mi wszystkie podkategorie telewizorów wraz z "Telewizory" Co wy o tym myślicie? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
nie: rodzica+własne id
a: rodzica+'/'+własne id nie: 12 a: 1/2 Bo jak będziesz miał kategorię o ID 12 to będziesz miał problem ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 3 Dołączył: 18.08.2011 Skąd: Chrzanów Ostrzeżenie: (0%) ![]() ![]() |
A no tak racja
![]() Ale ogólnie koncepcja dobra? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Tak, to się tak poza tym nazywa bodajże "drzewka IP"
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 3 Dołączył: 18.08.2011 Skąd: Chrzanów Ostrzeżenie: (0%) ![]() ![]() |
ok. Dzięki.
Teraz tylko jeszcze mam problem z uzupełnieniem aktualnego drzewka o ten SID mianowicie chce zrobić tak
to działa
to już nie działa mam komunikat: You can't specify target table 'k1' for update in FROM clause |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat OK faktycznie inny model drzewa byłby lepsze (problem tylko w tym że tego nie znam i musiał bym się tego nauczyć) Co zajmie Ci od kilku do kilkunastu minut (teoria). Następnych kilka(naście) minut poświęcisz na wdrożenie gotowych przykładów (odczytywania/wprowadzania danych do drzewa) do swojego projektu. Jestem niemal pewien, że pod każdym względem wyjdziesz na tym lepiej. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
dodam jedynie ze w zasadzie gotowych rozwiazan dla wiekszosci rozwiazan znajduje sie juz w sieci.
poczytaj teorie, wuguglaj skrypty - zaadoptuj i koniec. dodam od siebie, iż jeśli chcesz sie bawic w programiste - to drzewa sa jednym z podstawowych struktur, i praktyczna wiedza na ich temat zawsze ci się przyda. j. ps. wyguglanie skryptu dla twojego problemu zajelo mi ok 15 sec. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 05:51 |