---
title: "problem med distinct"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/168139-problem-med-distinct"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Vinnaren"
published: "2008-01-15T19:20:44.000Z"
updated: "2008-01-15T20:12:28.000Z"
replies: 19
views: 426
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/168139-problem-med-distinct"
---

# problem med distinct

## #1 — Vinnaren, 2008-01-15T19:20Z

Har följande:

```
SELECT p.PrId, p.Name, p.ShortDescription, pr.Price
FROM producttocamp AS ptc

INNER JOIN product AS p
ON ptc.PrId = p.PrId

INNER JOIN price AS pr
ON pr.PrId = p.PrId

WHERE ptc.CampId = @CampId
ORDER BY pr.StartDate DESC
```

Som koden är nu hämtas samma produkt flera gånger, jag vill bara visa den en gång. Har provat med Distinct på p.PrId men blev ingen skillnad.

Hur löser man detta?  :stud

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

## #2 — Peter S, 2008-01-15T19:29Z

Vid flera träffar på samma id - vilken post vill du då ha?

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

## #3 — Vinnaren, 2008-01-15T19:34Z

jag vill ha ut flera poster, men jag vill inte ha ut samma produkt så många gånger det finns ett pris för den. Tex finns det det 5 pris för en produkt så kommer den ut 5 gånger.

Så vill jag inte ha det.

Hur löser man det?

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

## #4 — Peter S, 2008-01-15T19:36Z

Men av dessa fem produkter - vilken vill du ha ut? Jag gissar att priset har en viss betydelse eftersom det är ett av fälten du väljer ut i SELECT.

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

## #5 — aasah, 2008-01-15T19:36Z

Om jag förstår dig rätt vill du ha ut de 5 priserna men produkt bara en gång?

Det går inte. Inte via SQL-satsen i varje fall. Det får du i så fall fixa via applikationen. Eller genom två separata SQL-frågor. En som tar ut produktens namn och en som tar fram resten.

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

## #6 — Vinnaren, 2008-01-15T19:45Z

ok, jag vill bara ha ut produkten en gång med ett pris. nu får jag ut produkten flera gånger med olika pris

tex

1  -  Test      -  100   
1  -  Test      -  500   
2   - Test2     -  100   

Jag vill bara ha ut Test en gång

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

## #7 — Peter S, 2008-01-15T19:46Z

Kan samma pris förekomma i någon av posterna för 1?

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

## #8 — aasah, 2008-01-15T19:47Z

OK, men VILKET av prisen vill du ha ut? Det spelar väl en viss roll om du får ut Pris 100 eller 500 ovan?

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

## #9 — Vinnaren, 2008-01-15T19:48Z

jag vill ha ut det senast inlagda priset dvs ORDER BY pr.StartDate DESC

Japp, 1 kan ha
1 - Test - 100  -  2007-10-10
1 - Test - 500  -  2007-12-12
1 - Test - 100  -  2008-01-01

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

## #10 — Peter S, 2008-01-15T19:54Z

Kan de ha samma datum också?

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

## #11 — Vinnaren, 2008-01-15T19:55Z

hmm, svår fråga, ja det kan vara samma, men det är inte troligt

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

## #12 — aasah, 2008-01-15T19:56Z

Hmmm... Testa:

```
SELECT p.PrId, p.Name, p.ShortDescription, pr.Price
FROM producttocamp AS ptc
INNER JOIN product AS p ON ptc.PrId = p.PrId
INNER JOIN price AS pr ON pr.PrId = p.PrId
WHERE ptc.CampId = @CampId 
GROUP BY p.PrId
HAVING pr.StartDate = 
   (SELECT MAX(pr.StartDate) FROM price C WHERE C.PrId = p.PrId)
ORDER BY pr.StartDate DESC
```

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

## #13 — Peter S, 2008-01-15T19:57Z

```
SELECT distinct p.PrId, p.Name, p.ShortDescription, pr.Price
FROM producttocamp AS ptc
INNER JOIN product AS p
ON ptc.PrId = p.PrId
INNER JOIN price AS pr
ON pr.PrId = p.PrId
WHERE ptc.CampId = @CampId 
and pr.StartDate = 
 ( select max(startdate) from price
   where prid = p.prid )
ORDER BY pr.StartDate DESC
```

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

## #14 — Vinnaren, 2008-01-15T19:59Z

> **aasah skrev:**
>
> Hmmm... Testa:
>
>
> ```
> SELECT p.PrId, p.Name, p.ShortDescription, pr.Price
> FROM producttocamp AS ptc
> INNER JOIN product AS p ON ptc.PrId = p.PrId
> INNER JOIN price AS pr ON pr.PrId = p.PrId
> WHERE ptc.CampId = @CampId 
> GROUP BY p.PrId
> HAVING pr.StartDate = 
>    (SELECT MAX(pr.StartDate) FROM price C WHERE C.PrId = p.PrId)
> ORDER BY pr.StartDate DESC
> ```

Tack, men får felmeddelandet 
"Column 'price.StartDate' is invalid in the HAVING clause because it is not contained in either an aggregate function or the GROUP BY clause."

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

## #15 — aasah, 2008-01-15T20:01Z

Prova Peters då.

Varken ditt eller mitt förslag funkar väl om ett prid, får två pris samma datum, Peter_S?

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

## #16 — Vinnaren, 2008-01-15T20:01Z

> **Peter S skrev:**
>
> ```
> SELECT distinct p.PrId, p.Name, p.ShortDescription, pr.Price
> FROM producttocamp AS ptc
> INNER JOIN product AS p
> ON ptc.PrId = p.PrId
> INNER JOIN price AS pr
> ON pr.PrId = p.PrId
> WHERE ptc.CampId = @CampId 
> and pr.StartDate = 
>  ( select max(startdate) from price
>    where prid = p.prid )
> ORDER BY pr.StartDate DESC
> ```

Tusentack för all hjälp, nu funkar den  (y)   :i

Fungerar dock inte om det är samma datum, men skit samma, får ha någon kolla så det inte kan vara det i databasen

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

## #17 — Peter S, 2008-01-15T20:04Z

> **aasah skrev:**
>
> Prova Peters då.
> 
> Varken ditt eller mitt förslag funkar väl om ett prid, får två pris samma datum, Peter_S?

I.o.m. att jag lade till DISTINCT slipper vi eventuella dubbletter (såvida inte produkterna skiljer sig vad gäller namn eller beskrivning) :)

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

## #18 — Peter S, 2008-01-15T20:05Z

> **Vinnaren skrev:**
>
> Tusentack för all hjälp, nu funkar den  (y)   :i
> 
> Fungerar dock inte om det är samma datum, men skit samma, får ha någon kolla så det inte kan vara det i databasen

Så poster med samma id och datum kan ha olika namn eller beskrivning?

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

## #19 — aasah, 2008-01-15T20:08Z

> **Vinnaren skrev:**
>
> Fungerar dock inte om det är samma datum, men skit samma, får ha någon kolla så det inte kan vara det i databasen

Byt ut datum mot datetime så är du i hamn. Att det skulle bli samma borde vara omöjligt.

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

## #20 — Vinnaren, 2008-01-15T20:12Z

> **aasah skrev:**
>
> Byt ut datum mot datetime så är du i hamn. Att det skulle bli samma borde vara omöjligt.

Tack för tipset   :bire

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/168139-problem-med-distinct
