---
title: "Hämta senaste ur annan tabell"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/67739-hämta-senaste-ur-annan-tabell"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Vide"
published: "2003-02-09T23:37:17.000Z"
updated: "2003-02-10T20:58:34.000Z"
replies: 7
views: 248
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/67739-hämta-senaste-ur-annan-tabell"
---

# Hämta senaste ur annan tabell

## #1 — Vide, 2003-02-09T23:37Z

Jag har en ganska fet SQL-sats som jag vill lägga till en sak i, ur tabellen "Loginlog" vill jag hämta fältet "date", men jag vill hämta det senaste datumet. Det finns en koppling mellan Members.id och Loginlog.uid.

Jag vill alltså hämta det senaste datumet som finns med i kopplingen till användarens id. Har lite svårt att förstå hur det skall göras. ;)

```
SELECT Members.id AS id, COUNT(Threads.UID) AS Posts, 
    Members.UserName, Members.Email, 
    Members.RegisteredEmail, Members.Password, 
    Members.ShowEmail, Members.City, Members.HomePage, 
    Members.AutoLogin, Members.Signature, Members.Avatar, 
    Members.Active, Members.RegisterDate, Members.UserLevel, 
    COUNT(Loginlog.UID) AS Logins, COUNT(PM.RecieverUID) 
    AS Mottagna_brev, COUNT(PM.SenderUID) 
    AS Skickade_brev
FROM Members INNER JOIN
    Loginlog ON Members.id = Loginlog.UID LEFT OUTER JOIN
    PM ON Members.id = PM.SenderUID LEFT OUTER JOIN
    Threads ON Members.id = Threads.UID
GROUP BY Members.id, Members.UserName, Members.Email, 
    Members.RegisteredEmail, Members.Password, 
    Members.ShowEmail, Members.City, Members.HomePage, 
    Members.AutoLogin, Members.Signature, Members.Avatar, 
    Members.Active, Members.RegisterDate, 
    Members.UserLevel
HAVING (Members.id = 3)
```

Mvh, Vide

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

## #2 — LarsG, 2003-02-10T09:15Z

,max(loginlog.date) as latestDate

Du borde flytta ditt villkor som du har i having till where.

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

## #3 — Vide, 2003-02-10T09:23Z

Ah, hjärnsläpp igen. ;)

> **LarsG skrev:**
>
> Du borde flytta ditt villkor som du har i having till where.

Varför då? Vad blir skillnaden?

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

## #4 — Engine^, 2003-02-10T09:31Z

Det blir väl ingen skillnad vad jag förstår. HAVING används normalt med GROUP BY, men fungerar på samma sätt som WHERE. Om du använder HAVING utan GROUP BY fungerar det på samma sätt som WHERE...

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

## #5 — LarsG, 2003-02-10T09:48Z

villkoren i having appliceras efter det att man gjort alla grupperingar och de i where innan grupperingen.

Det som händer är att du grupperar onödigt mycket data med din nuvarande formulering.

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

## #6 — Vide, 2003-02-10T10:00Z

Aha, där lärde man sig något nytt idag igen, härligt. :D

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

## #7 — LarsG, 2003-02-10T10:27Z

Det är möjligt att en DBMS skulle kunna optimera detta och se att just detta villkor kan utföras innan grupperingen men det är inget som man kan förutsätta i allmänhet. 

Du kan ju undersöka med set showplan/explain

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

## #8 — Vide, 2003-02-10T20:58Z

Upptäckte att det blir fel resultat av min SQL-sats. Frågorn "Posts" och "Logins" återger värdet av det dubbla som Logins skall återge. Nu återger "Logins" värdet 82 när det egentligen skall återge 41. Skumt nog återger "Posts" även 82, fast det skall återge 2. Så någon slags relation har uppstått som jag inte kan hitta.

Nuvarande kod:

```
SELECT Members.id AS id, COUNT(Threads.UID) AS Posts, 
    Members.UserName, Members.Email, 
    Members.RegisteredEmail, Members.Password, 
    Members.ShowEmail, Members.City, Members.HomePage, 
    Members.AutoLogin, Members.Signature, Members.Avatar, 
    Members.Active, Members.RegisterDate, Members.UserLevel, 
    COUNT(Loginlog.UID) AS Logins, COUNT(PM.RecieverUID) 
    AS Mottagna_brev, COUNT(PM.SenderUID) 
    AS Skickade_brev
FROM Members LEFT OUTER JOIN
    PM ON Members.id = PM.SenderUID LEFT OUTER JOIN
    Loginlog ON Members.id = Loginlog.UID LEFT OUTER JOIN
    Threads ON Members.id = Threads.UID
WHERE Members.id = 3
GROUP BY Members.id, Members.UserName, Members.Email, 
    Members.RegisteredEmail, Members.Password, 
    Members.ShowEmail, Members.City, Members.HomePage, 
    Members.AutoLogin, Members.Signature, Members.Avatar, 
    Members.Active, Members.RegisterDate, Members.UserLevel
```

Mvh, Vide

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/67739-hämta-senaste-ur-annan-tabell
