webForumDet fria alternativet

MAX()

4 svar · 321 visningar · startad av Uwe

UweMedlem sedan nov. 2003181 inlägg
#1

Har problem med en fråga där jag försöker få fram ett resultat där endast det senaste värdet visas.

Tabeller

file
-------
fid  (int)
counts (int)

mode
-------
fid (int)
mid (int)
datetime (date)
mode (int)

Det jag har försökt med är typ såhär:

SELECT	F.fid, mode, max(datetime) as datum, counts
FROM file F, mode M
WHERE F.fid=m.fid AND DateTime BETWEEN '2000-01-01 00:00:00' AND '2006-01-01 00:00:00'
GROUP BY F.fid, mode, counts

När jag gör denna får jag ut flera poster för varje fid, det jag vill ha är endast den som har det senaste datumet. Går det att göra en sån fråga?

TravoniMedlem sedan okt. 20041 538 inlägg
#2

Ett fältnamn som heter datatime tycker jag låter suspekt.

SELECT Top 1 F.fid, mode, max(datetime) as datum, counts
FROM file F, mode M
WHERE F.fid=m.fid AND [DateTime] BETWEEN '2000-01-01 00:00:00' AND '2006-01-01 00:00:00'
GROUP BY F.fid, mode, counts ORDER BY [DateTime]

*Något åt det hållet.

BTW; uppge alltid vilken databas vi talar om eftersom att mySql använder limit istället för top.

UweMedlem sedan nov. 2003181 inlägg
#3

Travoni skrev:

Ett fältnamn som heter datatime tycker jag låter suspekt.

SELECT Top 1 F.fid, mode, max(datetime) as datum, counts
FROM file F, mode M
WHERE F.fid=m.fid AND [DateTime] BETWEEN '2000-01-01 00:00:00' AND '2006-01-01 00:00:00'
GROUP BY F.fid, mode, counts ORDER BY [DateTime]

*Något åt det hållet.

BTW; uppge alltid vilken databas vi talar om eftersom att mySql använder limit istället för top.

Databsen är SQL Server.

Jag var kanske lite otydlig. Det jag vill ha ut är inte bara ett svar, utan ett record per fid.

LarsGMedlem sedan dec. 200012 465 inlägg
#4
SELECT	F.fid, mode, datetime as datum, counts
FROM file F, mode M
WHERE F.fid=m.fid 
AND DateTime BETWEEN '2000-01-01 00:00:00' AND '2006-01-01 00:00:00'
and datetime in
   (select max(datetime)
        from mode
      where mode.fid = m.fid)
UweMedlem sedan nov. 2003181 inlägg
#5

LarsG skrev:

SELECT	F.fid, mode, datetime as datum, counts
FROM file F, mode M
WHERE F.fid=m.fid 
AND DateTime BETWEEN '2000-01-01 00:00:00' AND '2006-01-01 00:00:00'
and datetime in
   (select max(datetime)
        from mode
      where mode.fid = m.fid)

Tack, funkar kanon!

Har aldrig sett att det går att använda en del från huvudfrågan i subfrågan som du gör med m.fid, vet du nån bra sida man kan hitta mer information om detta?

Genererad på 400 ms · cache AV · v20260730165559-full.f96bc7eb