witam tworze aplikacje bazodanaowa i projekt bazy przewiduje tabele samoodwolujaca sie do siebie, a mianowicie
[sql]
CREATE TABLE Kategorie(
idKategorii int IDENTITY (1, 1) NOT NULL PRIMARY KEY
nazwa varchar(30) NOT NULL ,
idNakategorii int NOT NULL
)
[/sql]
pole idKategorii wskazuje na kolejny wiersz w bazie (klucz glowny) natomiast pole idNakategorii wskazuje na nadkategorie, moje pytanie jest następujące jak wyświetlić cala droge od kategorii glownej do jakiejs wybranej przez uzytkownika kategorii, baza to MS SQL Server ale to nie ma wiekszego znaczenia, TIA pozdrawiam
samoodwolujace sie tabele
Re: samoodwolujace sie tabele
Jak masz tylko dwa poziomy kategorii to wystarczy, że wyświetlisz pod kategorię i pobierzesz nazwę kategorii wyższej.
Dwa poziomy - kategoria główna/pod kategoria
Tu nie będe się rozpisywał bo nie ma sensu...
Natomiast jak masz więcej niż dwa poziomy
Więcej niż dwa poziomy - kategoria główna/pod kategoria/pod pod kategoria
To przyszedł mi do głowy bardzo prosty pomysł:
Zapisujesz do zmiennej np. zmiennej sesji jak się user porusza tj. wchodzi do kategorii X to do zmiennej dodajesz X, natomiast logicznie gdy wyjdzie z tej kategorii to usuwasz X ze zmiennej no i wyświetlasz tą zmienną. Mam nadzieje, że mnie rozumiesz.
Najlepiej żebyś stworzył tablicę i potem dodawał do niej elementy array_push();
Oczywiście na to są setki innych rozwiązań, ale myśle, że to by było ok zarówno pod względem szybkości wykonywania jak i jego prostocie.
pozdrawiam.
Dwa poziomy - kategoria główna/pod kategoria
Tu nie będe się rozpisywał bo nie ma sensu...
Natomiast jak masz więcej niż dwa poziomy
Więcej niż dwa poziomy - kategoria główna/pod kategoria/pod pod kategoria
To przyszedł mi do głowy bardzo prosty pomysł:
Zapisujesz do zmiennej np. zmiennej sesji jak się user porusza tj. wchodzi do kategorii X to do zmiennej dodajesz X, natomiast logicznie gdy wyjdzie z tej kategorii to usuwasz X ze zmiennej no i wyświetlasz tą zmienną. Mam nadzieje, że mnie rozumiesz.
Najlepiej żebyś stworzył tablicę i potem dodawał do niej elementy array_push();
Oczywiście na to są setki innych rozwiązań, ale myśle, że to by było ok zarówno pod względem szybkości wykonywania jak i jego prostocie.
pozdrawiam.
