webForumDet fria alternativet
Logga in / Bli medlem

Distinct

Databaser & SQL

12 svar · 266 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Trådstart#1

Har sökt lite men får ändå inte till det. Vill hämta de posterna som senast finns i databasen.

id - räknare
besokar_id - tal
mem_id - tal
datum - datum/tid

Set RS = Con.Execute("Select distinct(besokar_id),datum,mem_id FROM besokare Where mem_id=" & Request.QueryString("id") & " Order by datum")
Medlem sedan dec. 200012 464 inlägg
#2
Set RS = Con.Execute("Select besokar_id,max(datum), max(mem_id) FROM besokare " & _
"Where mem_id=" & Request.QueryString("id") & " group by besokar_id Order by datum")

Distinkt gäller alla kolumner i select-listan, det är inte en funktion.

Medlem sedan dec. 20011 860 inlägg
#3

Jag får detta felmess med din kod.

Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna 
uttrycket 'datum'.

SQL´n

Set RS = Con.Execute("Select besokar_id,max(datum), max(mem_id) FROM besokare " & _
"Where mem_id=" & Request.QueryString("id") & " group by besokar_id Order by datum")
Medlem sedan dec. 20003 887 inlägg
#4

Eftersom max() är en mängdfunktion måste du nog ha med den i din GROUP BY... gissar jag på.

Set RS = Con.Execute("Select besokar_id,max(datum) as mDate, max(mem_id) as mId FROM besokare " & _
"Where mem_id=" & Request.QueryString("id") & " group by besokarid, mDate, mId Order by datum")

Lita nu inte så mycket på det här, men det vore kul om det fungerade.

Trial and error... that's how it gets done, yes?

Medlem sedan dec. 20011 860 inlägg
#5

Felmess med denna kod:

Set RS = Con.Execute("Select besokar_id,max(datum) as mDate, max(mem_id) as mId FROM besokare Where mem_id=" & Request.QueryString("id") & " group by besokar_id, mDate, mId Order by mDate desc")
Det har inte angetts något värde för en eller flera nödvändiga parametrar.

id - räknare
besokar_id - tal
mem_id - tal
datum - datum/tid

Medlem sedan dec. 20003 887 inlägg
#6
Set RS = Con.Execute("Select besokar_id,max(datum), max(mem_id) FROM besokare & _
    Where mem_id=" & Request.QueryString("id") & " group by besokar_id, max(datum), max(mem_id) Order by mDate desc")

Nu sitter jag här och chansar känns det som...

Vart är LarsG när du behöver han? ;)

Medlem sedan dec. 20003 887 inlägg
#7

Ignorera senaste

Ursäkta mig... mängdfunktioner kan inte vara med som GROUP BY...

Ska testa lite mer. Återkommer kanske med ett svar som är rätt senare ;)

Medlem sedan dec. 20003 887 inlägg
#8

Hmm... kollade lite nu och tycker nog att LarsG's förslag ska fungera alldeles utmärkt. Men så kom jag på en sak...

Set RS = Con.Execute("Select besokar_id,max(datum), max(mem_id) FROM besokare group by" & _
          " besokarid [b]having mem_id = " & Request.QueryString("id") & "[/b] Order by datum")

Nu så kanske det fungerar :)

Medlem sedan dec. 200012 464 inlägg
#9

Ursäkta mig,så här då.

Set RS = Con.Execute("Select besokar_id,max(datum), max(mem_id) FROM besokare " & _
"Where mem_id=" & Request.QueryString("id") & " group by besokar_id Order by 2 ")
Medlem sedan dec. 20003 887 inlägg
#10

Hmm... vad menar du?

Problemet är väl inte ORDER BY utan WHERE... villkoret måste sitta på GROUP BY.

Medlem sedan dec. 20011 860 inlägg
#11

En konstig grej. När jag ska skriva ut allt med din SQL LarsG så hittar den ej RS("datum"). Varför??

Medlem sedan dec. 200012 464 inlägg
#12

Det finns ingen kolumn som heter datum i resultatet.

Om du har ett uttryck i select.listan så har det inget namn om du inte namnger det.

select besokar_id,max(datum) as maxDatum, max(mem_id) as maxMem_id FROM besokare " & _
"Where mem_id=" & Request.QueryString("id") & " group by besokar_id Order by 2 ")

Om du gör så kan du använda maxDatum och maxMem_id i ditt recordset. Access tycker inte om att man använder ett befintligt kolumnnamn efter as.

Det går också bra att använda ordningsnummer. De startar på 0 så rs(1) motsvarar då andra uttrycket i select-listan.

Medlem sedan dec. 20011 860 inlägg
#13

Tackar för snabbt svar! Nu funkar det fint!

261 ms totalt · 4 externa anrop · v20260731065814-full.81e7e81c
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
115 ms — ändringar (db)