Zapytanie SQL pobierajace i formatujace menu w aplikacji

0

Witam serdecznie,
mam mały problem z zapytaniem SQL. Mam coś takiego:

SELECT DISTINCT B.bf_id AS id_kategori, B.nazwa AS nazwa_kategori, C.bf_id AS id_podkategori, C.nazwa AS nazwa_podkategori, D.bf_id AS id_podpodkategori, D.nazwa AS nazwa_podpodkategori FROM cms_produkty A INNER JOIN cms_kategorie B ON A.kategoria = B.bf_id INNER JOIN cms_podkategorie C ON A.podkategoria = C.bf_id INNER JOIN cms_podpodkategorie D ON A.podpodkategoria = D.bf_id ORDER by A.kategoria, A.podkategoria, A.podpodkategoria ASC ;

Które zwraca mi wyniki w formie:
id_kategori- nazwa_kategori- id_podkategori- nazwa_podkategori- id_podpodkategori- nazwa_podpodkategori
1- Kategoria 1- 2- Podkategoria 2- 3- Podpodkategoria 3
1- Kategoria 1- 3- Podkategoria 3- 2- Podpodkategoria 2
1- Kategoria 1- 3- Podkategoria 3- 3- Podpodkategoria 3
2- Kategoria 2- 1- Podkategoria 1- 1- Podpodkategoria 1

chciałbym dodać kolejną kolumnę "ilośćkategorii" i "ilość podkategorii" w których znajdowała by się ilość kategorii i podkategorii. W tym przypadku wyglądałoby to tak:
id_kategori- nazwa_kategori- id_podkategori- nazwa_podkategori- id_podpodkategori- nazwa_podpodkategori-ilośćkategorii-ilość podkategorii
1- Kategoria 1- 2- Podkategoria 2- 3- Podpodkategoria 3-3 (są 3 kategorie 1)-1 (jest 1 podkategoria 2)
1- Kategoria 1- 3- Podkategoria 3- 2- Podpodkategoria 2-3 (są 3 kategorie 1)-2 (są 3 podkategoria 3)
1- Kategoria 1- 3- Podkategoria 3- 3- Podpodkategoria 3-3 (są 3 kategorie 1)-2 (są 3 podkategoria 3)
2- Kategoria 2- 1- Podkategoria 1- 1- Podpodkategoria 1-1 (jest 1 kategoria 1)-1 (jest 1 podkategoria 1)

Wie ktoś może jak to zrobić?

Z góry dziękuje za pomoc,
North

0

Twoje podejscie do budowania menu aplikacji nie jest prawidlowe. Menu to nic innego jak drzewa.
Zainteresuj sie wobec tego modelem nested set model. Albo adjacency list.

Tutaj artykul opisujacy zaawansowane podejscie do adjacency list: Zaawansowane drzewa w MySQL
Ale mysle, ze w Twoim przypadku nested set model bedzie wystarczajace. Albo "zwykle" adjacency list. Struktura tabeli menu powinna byc nastepujaca:

Kolumna Opis
menu_id Id menu (unikalne)
menu_name Nazwa pozycji menu
menu_parent ID menu - rodzica. Moze byc wartosc null - wowczas menu jest menu glownym

1 użytkowników online, w tym zalogowanych: 0, gości: 1