---
title: "MIN() i JOIN men fortfarande dubbletter"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/192817-min-i-join-men-fortfarande-dubbletter"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "MickeA.com"
published: "2015-11-13T06:47:03.000Z"
updated: "2015-11-14T03:00:59.000Z"
replies: 3
views: 1492
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/192817-min-i-join-men-fortfarande-dubbletter"
---

# MIN() i JOIN men fortfarande dubbletter

## #1 — MickeA.com, 2015-11-13T06:47Z

Hej!

Har probelm med att få ut bästa tid för en distans, tillsammans med JOIN och tre tabeller:

```
[b]Resultat[/b]
ResId
ResUser
ResDate
ResDistance
ResTime

[b]Distanser[/b]
DistId (= Resultat.ResDistance)
DistName
```

Försöker med JOIN på resultat och MIN, för att få den bästa tiden:

```
SELECT 
`ResDate`, `ResDistance`, t2.`Result` AS `Result`, `DistName`
FROM `competition_result` t
  INNER JOIN 
  ( SELECT `ResId`, MIN(`ResTime`) `Result`
	FROM `competition_result` 
	WHERE `ResUser` = :UserId 
	GROUP BY `ResDistance` 
  ) t2
  ON t.`ResId` = t2.`ResId` 
    INNER JOIN `competition_distance` 
    ON t.`ResDistance` = `DistId` 
WHERE t.`ResUser` = :UserId 
ORDER BY `Distance`, `ResTime`, `ResDate`
```

Problemet är att i resultatet förekommer samma distans (med olika tid) flera gånger, samt att datumet (ResDate) kommer från fel rad. D.v.s tiden är rätt, men den väljer ett datum från samma distans fast en annan tid.

Förslag på hur jag löser det här? Känns rätt straight forward och jag förstår inte varför det inte fungerar.

Tacksam för hjälp!

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

## #2 — MickeA.com, 2015-11-13T07:08Z

Kan tillägga att i tabellen resultat kan det förekomma flera rader där **samma** användare har **flera** tider **med samma** datum för **samma** distans. Då ska den givetsvis välja den rad med BÄST (MIN()) tid.

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

## #3 — prplxr, 2015-11-13T09:21Z

MIN() ger dig inte en rad med det lägsta värdet i ett fält, det ger dig alla rader som matchar din where-sats med den skillnaden att alla rader kommer MIN()-värdet i ResTime.

Överväg att istället sortera på ResTime först och sätt LIMIT 1.

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

## #4 — MickeA.com, 2015-11-14T03:00Z

Löste det enligt den här principen: <http://stackoverflow.com/a/10122446>

 Fungerar som det ska nu.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/192817-min-i-join-men-fortfarande-dubbletter
