DinoMedlem sedan sep. 20011 914 inlägg Access
=======
Har en Category tabell och en Item tabell:
CREATE TABLE #Category
(
ca_id INT PRIMARY KEY,
ca_parentid INT,
ca_name VARCHAR
)
CREATE TABLE #Item
(
it_id INT PRIMARY KEY,
it_ca_id INT,
it_name VARCHAR
)
Säg att det finns en huvudkategori, Bil, som har en underkategori, GM, som i sin tur har en underkategori, Saab och så vidare.
Nu behöver jag en fråga som kan ta ut varje Item för en viss kategori och alla dess underkategorier.
Några ideer?
LarsGMedlem sedan dec. 200012 464 inlägg Du kan inte få en fråga som hanterar godtyckligt djup (i varje fall inte i Access, rent SQL-mässigt så finns det stödet definierat).
Antaingen får man ställa flera frågor eller så får man bestämma ett max-djup
select ... from cat as f join cat as c ... join cat as gc ...
where ...
union
select ... from cat as f join cat as c ...
where ...
union
select ... from cat
where ...
t.ex. för två nivåer nedåt
DinoMedlem sedan sep. 20011 914 inlägg Om du kolla denna länken, är det inte något sådant jag borde vara ute efter? Eller löser den något annat?
LarsGMedlem sedan dec. 200012 464 inlägg Jo, det är precis det du är ute efter. Du får göra om din tabelldesign något om jag förstått det hela rätt.
DinoMedlem sedan sep. 20011 914 inlägg Du som kan sånt här. Vad är innebörden av Qty, lft och rgt. Förstår inte riktigt upplägget.
LarsGMedlem sedan dec. 200012 464 inlägg Jag har inte tittat på det där.
Den där Celko känner jag igen... jag har gjort ett produktinformationssystem där jag hade just din problematik med undergrupper som kan vara "hur många som helst". Jag använder mig av denna "logik" som är snabb och otroligt snillrik.
Principen är enkel men lite kryptisk om man bara tittar på select-satsen. Titta i tabellen så kan vi säga att lft1 - rgt52 motsvarar din "bil" och lft2-rgt13 motsvarar din "GM" och då skulle lft3-rgt8 vara "SAAB" och lft10-rgt11 skulle kunna vara "OPEL". Om lft2-rgt13 är GM så skulle lft14-rgt42 kunna vara "Ford" och lft15-rgt16 vara "Volvo".
Titta på siffrorna så ser du att respektive grupps tal (left-right) är emellan den övergripande gruppens tal. Se gärna mer (kanske bättre förklaring) på sida Trees in SQL
Lycka till!
LaspMedlem sedan juli 200012 980 inlägg Det var en riktigt bra förklaring på trädstrukturer med olika djup.
Tack lolukokasos.
DinoMedlem sedan sep. 20011 914 inlägg Tack lolukokasos. :)
Nu återstår bara att få mitt hår att växa tillbaka igen.