webForumDet fria alternativet

sql fråga. hiearkier

6 svar · 551 visningar · startad av Bjuris

BjurisMedlem sedan juli 2001514 inlägg
#1

Det står helt still...

Jag har två tabeller
user_access (användare som matchas till grupper eller countries)
- user_name
- country
- group_name

samt
user_group
- group_name
- country
- group_child

Min user_group innehåller alla grupper (en grupp kan innehålla fler country eller fler grupper grupp) om gruppen innehåller ett land så finns landet i country och group_child innehåller '-'. om gruppen innehåller en annan grupp så är det tvärt om country='-' och group_name = grupp namnet.

På det här sättet kan man skapa egna grupper av regioner.
ex en grupp som heter Europe som i sin tur innehåller ett antal grupper eller länder, ex scandinavia som då i sin tur innehåller SE osv.

Sen så har jag som sagt en user_access tabell där användaren knyts till grupper eller länder.
på samma sätt innehåller raden country något så har group_name värdet '-'

Jag vill alltså läsa in en sql som hämtar alla grupper och dess länder som användaren har rätt att se.

...men som sagt, jag sitter bara just nu och stirrar på en tom select och vet inte hur jag riktigt skall attackera problemet.

adde2Medlem sedan maj 2000144 inlägg
#2

Använder du MS SQL 2005 eller nyare kan du använda en rekursiv CTE.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#3

Jag rekommenderar följande som föreslår ett flertal metoder för lagring av trädstrukturer i databaser:
http://www.alberton.info/talks_dpc_2009_wrapup.html
http://www.slideshare.net/quipo/trees-in-the-database-advanced-data-structures?type=presentation

BjurisMedlem sedan juli 2001514 inlägg
#4

Haft lite semester... ;)

Kör 2005 men CTE kan jag inte använda då SP är ett big no no.
Vad gäller databasstukturen, så kan jag väl medge att den inte är den bästa, men det är inte jag som har gjort den och den är spikad så den kommer inte att ändras. mao min uppgift (med förhoppningsvis er hjälp) är att få det att fungera.

Det är nämligen en gammal Java/Oracle miljö som vi lyfter över till .net/sql och där finns ju prior samt connect by.

adde2Medlem sedan maj 2000144 inlägg
#5

fast du behöver ju inte en SP för att köra CTE.

Kan knåpa ihop ett exempel ikväll.

adde2Medlem sedan maj 2000144 inlägg
#6

Tänkte knåpa ihop ett exempel med en CTE, men inser att jag är nog inte 100% med på hur dina hierarkier är uppbyggda.

Skulle du kunna posta lite exempeldata?

BjurisMedlem sedan juli 2001514 inlägg
#7

Alldeles för mycket ledighet...

Jag fixade det med en egen metod i c# koden istället. då jag cachar tabellen så spelar det inte så stor roll att det blir fler anropp mot datat.

133 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)