---
title: "Högsta värdet från join-tabellen"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/108487-högsta-värdet-från-join-tabellen"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Ankman"
published: "2004-08-04T12:07:02.000Z"
updated: "2004-09-13T01:03:13.000Z"
replies: 12
views: 449
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/108487-högsta-värdet-från-join-tabellen"
---

# Högsta värdet från join-tabellen

## #1 — Ankman, 2004-08-04T12:07Z

Vet att jag läst hur man gör detta men hittar inte lösningen nånstans nu. 

Tabellen log innehåller flera poster för varje user_id, jag vill hämta den med högst l.time men vet inte hur. 
Nedanstående fråga hämtar den först påträffade raden i log där u.id = l.user_id, dvs den där time är lägst. 

```
SELECT 
    u.username, u.id, l.page, l.query, l.time  
FROM  
    users u  
INNER JOIN  
    log l  
ON  
    u.id = l.user_id  
WHERE  
    u.online > '2004-08-04 13:54:43'  
GROUP BY 
    u.username, u.id  
ORDER BY  
    u.username
```

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

## #2 — LarsG, 2004-08-04T17:29Z

```
SELECT 
    u.username, u.id, l.page, l.query, l.time  
FROM  
    users u  
INNER JOIN  
    log l  
ON  
    u.id = l.user_id  
WHERE l.time = (select max(time) from log  
where log.user_id = l.user_id)
and 
    u.online > '2004-08-04 13:54:43'
```

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

## #3 — Ankman, 2004-08-04T19:57Z

Ok, glömde naturligtvis att tala om att det MySql, alltså inga subqueries.

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

## #4 — LarsG, 2004-08-05T07:29Z

```
SELECT u.username, u.id, l1.page, l1.query, l1.time  
FROM   users u  INNER JOIN  log l1
ON     u.id = l1.user_id
inner join log l2 on l1.user_id = l2.user_id  
WHERE u.online > '2004-08-04 13:54:43'
group by u.username, u.id, l1.page, l1.query, l1.time  
having l1.time = max(l2.time)
```

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

## #5 — Ankman, 2004-08-05T10:22Z

Frågan ovan ser ut att göra precis det som jag vill, men något (som jag inte hittar) måste vara fel i den. MySql hänger sig eller nåt (tar all CPU i några minuter, inget händer).

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

## #6 — Ankman, 2004-08-12T19:53Z

Ingen som kan se något fel? Har kollat igenom alla fältnamn och så men hittar inget fel. Det är svårt när man inte får något felmeddelande. 

Några tips om hur man felsöker en sån här fråga? Det enda jag kunde komma var att köra explain på den, men det säger mig inte så mycket. (Det funkar i alla fall, alltid något).

```
+-------+--------+---------------+---------+---------+------------+------+---------------------------------+
| table | type   | possible_keys | key     | key_len | ref        | rows | Extra                           |
+-------+--------+---------------+---------+---------+------------+------+---------------------------------+
| l1    | ALL    | NULL          | NULL    |    NULL | NULL       | 6962 | Using temporary; Using filesort |
| l2    | ALL    | NULL          | NULL    |    NULL | NULL       | 6962 | Using where                     |
| u     | eq_ref | PRIMARY       | PRIMARY |       4 | l1.user_id |    1 | Using where                     |
+-------+--------+---------------+---------+---------+------------+------+---------------------------------+
3 rows in set (0.00 sec)
```

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

## #7 — aasah, 2004-08-12T23:15Z

Jag är inte säker men möjligen:

```
SELECT u.username, u.id, l1.page, l1.query, l1.time  
FROM   [b][blue][3]([/3][/blue][/b]users u  INNER JOIN  log l1
ON     u.id = l1.user_id[b][blue][3])[/3][/blue][/b]
inner join log l2 on l1.user_id = l2.user_id  
WHERE u.online > '2004-08-04 13:54:43'
group by u.username, u.id, l1.page, l1.query, l1.time  
having l1.time = max(l2.time)
```

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

## #8 — Ankman, 2004-08-13T00:21Z

Tyvärr. Det blir samma skit. Processorn går i topp. Andra förslag?

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

## #9 — LarsG, 2004-08-13T07:25Z

Du får väl definera index på time, user_id och kanske online då.

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

## #10 — Ankman, 2004-08-13T08:56Z

Det hjälpte inte. När jag kör frågan utan explain så får jag samma resultat som innan, dvs inget.

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

## #11 — LarsG, 2004-08-13T09:03Z

Vad menar du?

Att du inte får någon respons alls från mysql?

Att du får en tom resultmängd?

Att du får en tom resultmängd och att det tar väldig lång tid att få fram det?

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

## #12 — Ankman, 2004-08-13T10:04Z

Jag får ingen respons alls från MySql.

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

## #13 — Ankman, 2004-09-13T01:03Z

Har fortfarande inte fått ordning på den här SQL-satsen. Samma problem fortfarande, MySql "hänger" sig i några minuter. Det tycks vara något med tabellen users  i alla fall, den går inte att komma åt från PhpMyAdmin efter att man kört frågan, däremot går det att komma åt log.

Jag fattar ingenting.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/108487-högsta-värdet-från-join-tabellen
