---
title: "Lista samma sak bara en gång?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/180028-lista-samma-sak-bara-en-gång"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "magnusfeldth"
published: "2009-08-30T19:12:07.000Z"
updated: "2009-09-01T17:02:31.000Z"
replies: 10
views: 623
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/180028-lista-samma-sak-bara-en-gång"
---

# Lista samma sak bara en gång?

## #1 — magnusfeldth, 2009-08-30T19:12Z

Nu  kommer ytterligare en fråga:

Säg att en databas ser ut på följande sätt:
Primärnyckel - prylid
Prylnamn
Prylkategori

Ur den här vill jag hämta ut alla prylkategorier, sedan under varje prylkategori lista alla prylar som hör till den prylkategorin i stil med

datorer
\-dator 1
\-dator 2
\-dator 3

mobiltelefoner
\-mobiltelefon1
\-mobiltelefon2

GPS
\-GPS1
\-GPS2

osv.

Jag kan dock inte komma på hur jag skall skriva koden för en accessdatabas med ASP... 

Kom igen wF-genier, work your magic!

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

## #2 — SPiN, 2009-08-30T19:26Z

Jag skyller det här inlägget på två raka veckors arbete, en sommar utan semester och allmänt hjärnsläpp.

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

## #3 — magnusfeldth, 2009-08-30T19:34Z

hur menar du då?

jag tänkte först använda ett 
visa = "select nånting nånting order by kategori"

och sen ytterligare en kallelse för prylarna inom den kategorin
visa = "select osv where prylkategori = '" & trim(recset("prylkategori")&"' 
loop

loop på kategori

hur kan jag få in din kod här SPiN?

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

## #4 — LarsG, 2009-08-30T19:45Z

```
select Prylkategori,
         Prylnamn
  from Prylar
 order by prylkategori
```

Du får själv hålla reda på (i din ASP-kod) när du får en ny kategori och i det läget skriva ut namnet. Det är inget som man löser med hjälp av SQL.

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

## #5 — magnusfeldth, 2009-08-30T20:29Z

hm, då kanske det är asp-koden jag behöver hjälp med... behöver tråden flyttas?

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

## #6 — nitro2k01, 2009-08-31T04:48Z

För att förtydliga vad LarsG menar: Du kommer få ut datat på denna form:

```
[b]Prylkategori	Prylnamn[/b]
Datorer		Dator 1
Datorer		Dator 2
Datorer		Dator 3
Motor		Mobil 1
Mobiler		Mobil 2
Mobiler		Mobil 3
GPS		GPS 1
GPS		GPS 2
GPS		GPS 3
```

Det din kod måste göra i det fallet är att detektera när det kommer en ny kategori. Lite pseudokod: 

```
tmpKat = ""

while not rs.eof()
    if tmpKat <> rs.kategorinamn
        skrivutkategori rs.kategorinamn
        tmpKat = rs.kategorinamn
    end if

    skrivutpryl rs.prylnamn

    rs.next
end while
```

Detta är bara pesudokod, och knappast i närheten gångbar ASP. Men jag hoppas att du ska se vilken logik som behövs i ASP'n. (Ungefär som om jag skulle snacka franska, utifrån min gamla skolfranska... Jag skulle få ur mig ett par ord, kanske till och med göra mig förstådd, men det skulle ändå låta skrattretande.)

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

## #7 — magnusfeldth, 2009-08-31T16:37Z

Här är min faktiska kod just nu:

```
<%
Set RecSet2 = Server.CreateObject("ADODB.Recordset")
   Visa2 = "SELECT * FROM collectiondb WHERE visa = 'ja'  order by kategori ASC "

   RecSet2.Open Visa2, Connect, adOpenStatic, adLockOptimistic 
%><% Do Until RecSet2.EOF %><div id="text">

<div id="listatop"><b><% = Ucase(RecSet2("kategori")) %></b></div>
</div>
<div class="box"><%		
             
   Set RecSet3 = Server.CreateObject("ADODB.Recordset")
   Visa3 = "SELECT * FROM collectiondb WHERE visa = 'ja' and kategori = '" & Trim(Recset2("kategori")) & "' order by collectionid DESC "

   RecSet3.Open Visa3, Connect, adOpenStatic, adLockOptimistic 
                   %>
                <% Do Until RecSet3.EOF %>

<div id="minibox"><h5><a href="images/<% = RecSet3("bildstor") %>" class="lightbox" title="<% = RecSet3("rubrik") %>"><img border="0" src="images/<% = RecSet3("bildmini") %>"></a><br><b><% = RecSet3("rubrik") %></b><br>
<% = RecSet3("pris") %> kr</h5></div>
<% RecSet3.Movenext
                loop
              
                %></div><% RecSet2.Movenext
                loop
              
                %>
```

Den listar dock om samma kategori lika många gånger som det finns prylar i den aktuella kategorin... så nu kommer tricket att få ett asp-skript som bara skriver ut den en gång... hm...

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

## #8 — magnusfeldth, 2009-09-01T16:06Z

ingen som har nån idé?

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

## #9 — @nders, 2009-09-01T16:30Z

> **[magnusfeldth skrev:](https://www.webforum.nu/p/1479008)**
>
> ingen som har nån idé?

Jo - nitro gav dig utmärkt pseudokod. Försök implementera efter hans exempel.  :)

mvh

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

## #10 — @nders, 2009-09-01T16:32Z

Eller - om du vill göra det så enkelt som möjligt för dig utan att lära dig speciellt mycket - kan du ändra din första sql-fråga till:

```
   Visa2 = "SELECT DISTINCT kategori FROM collectiondb WHERE visa = 'ja'  order by kategori ASC "
```

Men det är helt klart bättre att ~~göra det med en join~~ klippa hela första frågeriet och sedan använda nitros pseudo-variant.

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

## #11 — magnusfeldth, 2009-09-01T17:02Z

tack snabeln. klart jag vill lära mig, men med tidsbrist, feber och allmän 80 timmars arbetsvecka känns en snabb lösning ganska skön ibland

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/180028-lista-samma-sak-bara-en-gång
