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?
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å?
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
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.
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!
257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2