---
title: "DISTINCT-fråga"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/157829-distinct-fråga"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "asp"
published: "2007-03-04T13:27:55.000Z"
updated: "2007-03-22T22:33:44.000Z"
replies: 12
views: 878
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/157829-distinct-fråga"
---

# DISTINCT-fråga

## #1 — asp, 2007-03-04T13:27Z

Hej..

Vill klämma in en kod så inte "Till" upprepas någon gång.

```
SELECT * FROM Bud

SELECT DISTINCT Till FROM Bud
```

Men när jag kör nedersta raden så kan jag ej använda mig av andra fält som summa och datum. Då får jag felmeddelandet:

Error Type:
ADODB.Recordset (0x800A0CC1)
Item cannot be found in the collection corresponding to the requested name or ordinal.
/transfer/bids.asp, line 15

Rad 15 innehåller.... makeSumma(rs("Summa"))

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

## #2 — Troxy, 2007-03-04T13:37Z

Du borde läsa på hur SQL egentligen fungerar.
Om du bara skriver "SELECT DISTINCT Till" så hämtar den bara kolumnen "Till", och då kan du inte skriva ut några andra fält.

Vad är det för fler fält du vill hämta?
Vad innehåller summa?
Vad gör funktionen makeSumma()?

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

## #3 — LarsG, 2007-03-04T13:42Z

Flyttas från ASP

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

## #4 — asp, 2007-03-04T13:42Z

Tycker det står ganska klart att jag vill också hämta fälten summa och datum. Summa innehåller ett tal och makeSumma gör talet till rätt valuta. Men det spelar ingen roll.

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

## #5 — Troxy, 2007-03-04T14:23Z

```
SELECT DISTINCT Till, Summa, Datum FROM Bud
```

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

## #6 — asp, 2007-03-04T16:09Z

Redan testat det, kommer fortfarande flera poster där "Till" har samma värde... nu läste jag visserligen problemet med en IF-sats istället, men hade ändå varit bra om man kunde få reda på hur SQL-satsen sett ut... :)

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

## #7 — LarsG, 2007-03-04T16:39Z

Om det för ett värde på TILL finns flera olika värden av SUMMA och DATUM, vilken post av dessa vill du då hämta? Ange exempel på datainnehåll och förväntat resultat. 

Du skall inte behöva använda någon if-sats i ASP för att få fram resultatet.

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

## #8 — asp, 2007-03-04T19:46Z

Jag vill hämta poster där TILL ej upprepas. Om det finns poster med samma värde i TILL så skall den ta värdet där SUMMA är högst.

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

## #9 — LarsG, 2007-03-04T19:50Z

```
select till,datum,summa
   from bud as b
  where summa
   in (select max(summa)
          from bud
         where bud.till = b.till)
```

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

## #10 — asp, 2007-03-22T18:20Z

Tack, koden fungerar. Kan någon förklara HUR koden fungerar.

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

## #11 — Compusa, 2007-03-22T20:39Z

Läs här: <http://www.onlamp.com/pub/a/onlamp/2001/07/26/aboutSQL.html>

Om du inte förstår ändå, så finns matnyttigt här: <http://www.google.se/search?hl=sv&q=sql+subqueries&btnG=S%C3%B6k&meta=>

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

## #12 — asp, 2007-03-22T21:55Z

Okej, tack har läst men har svårt att förstå exakt vad som händer.

Kanske kan förstå bättre om jag får ett svar på denna fråga...

Har en tabell med fält:
Av (Budarens ID)
Till (Spelarens ID)
Summa (Summa i SEK)

För att räkna ut hur mycket en budare har lagt totalt summerar jag Summa. Men nu vill helst att den inte skall summera två poster där Till är av samma värde, utan ta den som är högst.

```
SELECT TOP 10 Av, Sum(Summa) AS antal FROM Bud GROUP BY Av ORDER BY 2 DESC, Av ASC
```

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

## #13 — emission, 2007-03-22T22:33Z

```
SELECT Av,SUM(DISTINCT(Summa)) FROM Bud b
WHERE summa
   in (select max(summa)
          from bud
         where bud.till = b.till and bud.av=b.av)
GROUP BY Av
```

eller

```
SELECT Av,SUM(MaxSumma) FROM
(
   SELECT Av,Till,MAX(Summa) as MaxSumma FROM Bud GROUP BY Av,Till
) m
GROUP BY Av
ORDER BY SUM(MaxSumma) DESC,Av
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/157829-distinct-fråga
