webForumDet fria alternativet

Är det en Join jag letar efter?

Databaser & SQLur Databashanterare & SQL

4 svar · 457 visningar · startad av KoTTeN

Medlem sedan sep. 20011 722 inlägg
Frågan#1

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
Medlem sedan juli 20033 147 inlägg
#2

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
Medlem sedan sep. 20011 722 inlägg
#3

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

Medlem sedan juni 20034 013 inlägg
#4

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.

Medlem sedan juli 20033 147 inlägg
#5

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.

126 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)