---
title: "Är det en Join jag letar efter?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/140189-är-det-en-join-jag-letar-efter"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "KoTTeN"
published: "2006-01-02T18:58:09.000Z"
updated: "2006-01-02T20:14:09.000Z"
replies: 4
views: 469
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/140189-är-det-en-join-jag-letar-efter"
---

# Är det en Join jag letar efter?

## #1 — KoTTeN, 2006-01-02T18:58Z

Ska få ut information ur två tabeller tillsammans. Tabellerna ser ut som följande:

```
Användare
AnvID   AnvNamn
--------------------
1         Ronny
2         Leif

Tiddata
Tid        AnvID
---------------
12:43      1
13:43      1
01:13      2
```

Nu vill jag presentera Användarnamn och senaste inlagda tiden. Exempelvis Ronny 12:43. Jag har testat inner join, men då får jag två rader om Ronny, en för varje tid som finns inlagd. Hur gör man för att enbart visa den senaste inlagda tiden? Koden som den ser ut nu: 

```
SELECT Anv.AnvID, Anv.AnvForNamn, Anv.AnvEftNamn, Anv.AnvInitNamn, Anv_Tid.TidTyp, Anv_Tid.TidOpen
FROM Anv 
INNER JOIN Anv_Tid
ON Anv.AnvID = Anv_Tid.AnvID
```

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

## #2 — Melea, 2006-01-02T19:34Z

Detta borde funka.

```
select
   Anv.anvID,
   Anv.anvForNamn,
   Anv.AnvEftNamn,
   Anv.AnvInitNamn,
   Anv_Tid.TidTyp,
   Anv_Tid.TidOpen
from
   Anv
left join
   Anv_Tid on Anv.AnvID = Anv_Tid.AnvID
```

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

## #3 — KoTTeN, 2006-01-02T19:43Z

Tyvärr så blir resultatet den samma. Jag får fram dubletter av Ronny. :(

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

## #4 — tydal, 2006-01-02T20:01Z

Det är en join du ska ha, men det är lite till... Låt Max vara med också :-)

```
SELECT anvForNamn, anvEftNamn, MAX(tid)
FROM Anv
LEFT JOIN Anv_Tid USING (AnvID)
GROUP BY Anv.AnvID
```

MAX() ger ju det högsta värdet. Observera dock att kolumnen i det fallet inte får vara enbart ett klockslag, utan du måste ha med datum också. Ett timestamp med andra ord.

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

## #5 — Melea, 2006-01-02T20:14Z

Satt och pillade lite, kom fram till samma resultat som tydal.

```
select
   a.AnvID,
   a.AnvNamn,
   max(date_format(at.TidTyp, '%H:%i')) as TidTyp
from
   anv a
left join
   anv_tid at on a.AnvID = at.AnvID
group by
   a.AnvID,
   a.AnvNamn
```

Men, som LarsG lärde mig.

> **LarsG skrev:**
>
> Alla ickeaggregerade kolumner i selectlistan måste vara med i group by.

La även dit formateringen på tiden så att sekunder inte kommer med.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/140189-är-det-en-join-jag-letar-efter
