webForumDet fria alternativet

SQL: hämta mer ur post med SELECT MAX

9 svar · 888 visningar · startad av Koggen

KoggenMedlem sedan juni 2002169 inlägg
#1

Hej allihop

Lite knepigt att förklara det här, hoppas ni förstår.

Jag håller på med en anslagstavla där jag bl a skall visa senast gjorda inlägg. Huvudtrådarna ligger i en tabell och svaren i en annan. Vid skapande av huvudtråd eller svar lagras datum och tid i tabellen tavla (huvudtrådarna).

Jag hämtar nyaste inlägget med SELECT MAX, men nu skulle jag även behöva få fram id-numret för det med SELECT MAX skapade recordsetet.

Jag skulle kunna använda datum och tid i fältet tavla_svar_senaste för att i nästa SQL-sats ta fram rätt post, men det känns inte optimalt med tanke på att det datumet faktiskt kan ändras under tiden användaren är inne och då fungerar det ju inte.

Så min fråga är: kan man få fram ett fält till i samma post förutom det man angett i MAX-satsen?

Tack på förhand

Lite kod:

SQLSenasteInlagg = "SELECT MAX(tavla_svar_senaste) as Senaste from tavla"
Set rsSenasteInlagg = CreateObject("ADODB.Recordset")
rsSenasteInlagg.open SQLSenasteInlagg, Connect
senasteDatum = rsSenasteInlagg("Senaste")
senasteId = rsSenasteInlagg("tavla_id") ' Denna rad funkar alltså inte

response.write(senasteDatum)

ZaimanMedlem sedan dec. 20012 439 inlägg
#2

Flyttas från ASP

"SELECT MAX(tavla_svar_senaste) as Senaste, tavla_id from tavla"

Prova att ta med tavla_id i din select?

KoggenMedlem sedan juni 2002169 inlägg
#3

Tack för svaret, men det funkar tyvärr inte, då får jag:

Microsoft JET Database Engine (0x80040E21)
Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'tavla_id'.
/anslagstavla.asp, line 102

(rad 102 är raden med CreateObject)

ZaimanMedlem sedan dec. 20012 439 inlägg
#4

Hur ser tabellen tavla ut? Vilken databas använder du?

nitro2k01Medlem sedan aug. 20037 630 inlägg
#5
"SELECT MAX(tavla_svar_senaste) as Senaste, tavla_id from tavla GROUP BY tavla_id"
KoggenMedlem sedan juni 2002169 inlägg
#6

Tack nitro, nu funkar det nästan. Märkligt nog får jag det lägsta datumet som resultat. Att ändra till SELECT MIN gjorde ingen skillnad. Kan det ha att gör med att formatet på datumfältet är text och ser ut så här: 2010-01-22 08:56:15?

Jag använder Access.

nitro2k01Medlem sedan aug. 20037 630 inlägg
#7

Det kan ha med saken att göra. Dock tycker jag att att don borde sortera rätt ändå. Men varför lagrar du inte datumen i en kolumn med datumtyp? Finns det förresten ens några datumtyper i Access?

@ndersMedlem sedan juni 200026 914 inlägg
#8

Ja, det finns en datumtyp i Access - och lagrar man datum i textfält får man räkna med att saker och ting inte fungerar som tänkt.

Gör om, gör rätt. :)

KoggenMedlem sedan juni 2002169 inlägg
#9

Jo jag misstänkte att det kunde bli fel, men det funkar ändå inte trots att jag ändrat till Datum/tid-format i Access. Det är fortfarande lägsta datum som visas. Jag har provat att skapa en ny post efter formatändringen, men det blir samma sak.
Det känns snart som om jag får hitta en annan lösning

postolMedlem sedan jan. 201017 inlägg
#10

Testa med TOP och ORDER istället.

"Select top 1 [tavla_svar_senaste], [tavla_id] order by [tavla_svar_senaste] desc"

om du hellre vill ha reverserad ordnig så skriver du
"Select top 1 [tavla_svar_senaste], [tavla_id] order by [tavla_svar_senaste] asc"

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