---
title: "Self-joined subcategories"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/113914-self-joined-subcategories"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Dino"
published: "2004-10-19T12:06:18.000Z"
updated: "2004-10-20T21:20:15.000Z"
replies: 8
views: 318
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/113914-self-joined-subcategories"
---

# Self-joined subcategories

## #1 — Dino, 2004-10-19T12:06Z

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?

Permalänk: https://www.webforum.nu/p/113914

## #2 — LarsG, 2004-10-19T12:46Z

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

Permalänk: https://www.webforum.nu/p/1464834

## #3 — Dino, 2004-10-19T12:51Z

Om du kolla denna [länken](http://www.mvps.org/access/queries/qry0023.htm), är det inte något sådant jag borde vara ute efter? Eller löser den något annat?

Permalänk: https://www.webforum.nu/p/1464840

## #4 — LarsG, 2004-10-19T13:04Z

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.

Permalänk: https://www.webforum.nu/p/1464847

## #5 — Dino, 2004-10-19T13:10Z

Du som kan sånt här. Vad är innebörden av Qty, lft och rgt. Förstår inte riktigt upplägget.

Permalänk: https://www.webforum.nu/p/1464851

## #6 — LarsG, 2004-10-20T19:21Z

Jag har inte tittat på det där.

Permalänk: https://www.webforum.nu/p/1465531

## #7 — lolukokasos, 2004-10-20T20:20Z

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](http://www.intelligententerprise.com/001020/celko.jhtml?_requestid=57016) 

Lycka till!

Permalänk: https://www.webforum.nu/p/1465585

## #8 — Lasp, 2004-10-20T20:35Z

Det var en riktigt bra förklaring på trädstrukturer med olika djup.
Tack lolukokasos.

Permalänk: https://www.webforum.nu/p/1465593

## #9 — Dino, 2004-10-20T21:20Z

Tack lolukokasos. :) 
Nu återstår bara att få mitt hår att växa tillbaka igen.

Permalänk: https://www.webforum.nu/p/1465635

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/113914-self-joined-subcategories
