---
title: "För många poster vi join"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/60980-för-många-poster-vi-join"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "juventus1"
published: "2002-12-03T11:55:01.000Z"
updated: "2002-12-09T19:15:37.000Z"
replies: 10
views: 238
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/60980-för-många-poster-vi-join"
---

# För många poster vi join

## #1 — juventus1, 2002-12-03T11:55Z

Hej!

Jag har stött på lite problem. Jag har två tabeller:

Persons
\-------
ID
....
Name

och

Meeting
\----------
ID
DateOfMeeting
....
PersonID

Jag vill visa alla personer ordnade efter när de senast var med på ett möte. Frågan jag har just nu (Access, som synes):

```
SELECT Person.Name, Meeting.ID, Meeting.DateOfMeeting
FROM Persons INNER JOIN Meeting ON Meeting.PersonID=Persons.ID
WHERE Meeting.DateOfMeeting=#12/3/2002#
ORDER BY Meeting.DateOfMeeting DESC;
```

Problemet är att en person kan förekomma flera gånger i varje möte och att en person kan förekomma en massa gånger i mötestabellen om man tittar bakåt. Därför ger frågan många fler poster än personer. Jag vill endast ha lika många poster som antal personer ordnade efter deras senaste mötesbesök. Är det någon som vet hur jag ska göra?

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

## #2 — LarsG, 2002-12-03T13:07Z

```
select id,name,(select max(dateOfMeeting) from meeting
where personid = p.personid) as lastMeatDate
from persons as p
order by 3 desc
```

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

## #3 — juventus1, 2002-12-03T13:23Z

Fungerar perfekt!

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

## #4 — juventus1, 2002-12-06T11:38Z

Det verkar inte fungera så bra trots allt. Har hunnit testa lite nu. Nu ser frågan ut så här:

```
SELECT p.ID, p.Name, (SELECT MAX(dateOfMeeting) FROM 
Meeting WHERE personID = p.ID) AS lastMeetingDate
FROM Persons AS p
ORDER BY 3 DESC;
```

Men problemet är att den inte sorterar ordentligt. Resultatet kan se ut så här:

ID ... lastMeetingDate
13    2002-12-03
12    2002-12-03
11    2002-12-10
10    2002-12-03

Förstår inte riktigt varför det blir så. Är det någon som vet vad det beror på?

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

## #5 — LarsG, 2002-12-07T19:29Z

Nej, det ser ju skumt ut. Blir sorteringen på någon annan kolumn eller är det bara osorterat?

3:an står för tredje kolumn så om du har lagt till fler kolumner i select-listan så måste du ändra den också.

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

## #6 — juventus1, 2002-12-08T14:01Z

Det verkar som sorteringen sker efter första kolumnen. Att sortera efter 1:a eller 3:e kolumnen ger konstigt nog samma resultat. Väljer jag däremot att sortera efter 2:a kolumnen (namn) blir det rätt. Det gör att jag funderar på om sub-frågan är riktig. Vet du vad det kan bero på?

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

## #7 — LarsG, 2002-12-08T17:16Z

I och med att du får rätt resultat så är nog sub-frågan riktig. Det kanske går bättre om du skriver så här

```
select p.id,p.name,max(dateOfMeeting) as lastMeetingDate
 from person p left outer join meeting m
    on p.id = m.personid
group by p.id,p.name
order by 3 desc
```

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

## #8 — juventus1, 2002-12-09T17:52Z

När jag klistar in frågan direkt i access vill den ha ett värde på m.personid. Oavsettt vilket id man ger den så blir resultatet:

ID ... lastMeetingDate
Valfritt      2002-12-26

Datumet är maxdatumet. Men man får det oavsett när personen egentligen senast var med.

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

## #9 — LarsG, 2002-12-09T18:19Z

Stämmer den tabelldefinition som du visade i början av tråden? Där har du persons men du använder person i select-satsen. Hur är det egentligen?

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

## #10 — juventus1, 2002-12-09T18:57Z

Det står fel i första inlägget, det skall stå Persons och inte Person. Jag gjorde två nya tabeller (utan en massa onödiga kolumner och data i) och testade den senaste frågan du postade och den verkar fungera. Ska testa lite till och kolla vad felet var i den andra databasen.

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

## #11 — juventus1, 2002-12-09T19:15Z

Jag hittade felet nu. Jag hade av någon anledning ett annat namn personid i den ursprungliga databasen. Det var därför den ville ha ett värde på personid. Tycker det är lite konstigt att jag inte fick syntaxfel för det. Nu fungerar det iaf fint. Tack så mycket för hjälpen!

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/60980-för-många-poster-vi-join
