02. juli 2004 - 15:28Der er
37 kommentarer og 1 løsning
lave en liste ud fra database med 2 kriterier
Hejsa
Jeg skal have lavet et indtastningsliste.
Ved gennemgang af en database (database.mdb) skal den først finde alle indtastninger fra bruger nr. 1 (rs(”brugernr”)) ogvælge den nyeste ud (vælg højeste ID) og skrive denne indtastning (rs(”indtastning”))
Dernæste skal den tage næste bruger og gøre det samme o.s.v. indtil der ikke er flere brugerere.
På resultat siden vil der så være en liste med alle brugere og deres sidste indtastning.
Hvem kan lave det?
I databasen hedder rækkerne : Databasen = database.mdb Bruger nummer = brugernr ID = ID Indtastning = indtastning
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
okay.... så der er to tabeller i databasen.. en med brugere og en med indtastninger.. Ikke.. Og hvis ja... Bliver brugerens id gemt i indtastning-tabel og bliver der også gemt et id for indtastningen...
oaky.. såden skal vise brugerne med alle deres indtastninger... først den første bruger med alle hans indtastninger, og derefter den næste bruger med alle hans indtastninger.. eller hvad
sql ="select bruger, max(id) as maxid from indtastning group by bruger" set rs = conn.execute(sql) Do while NOT rs.eof sql1 ="select * from indtastning where id='" &rs("maxid")& "'" set rs1 = conn.execute(sql1)
Response.write "Brugeren " & rs("bruger") & " sidste indtastning er " & rs1("indtastning") &"<br>" rs.movenext loop
Det eneste du lige skal er at lave conn, til databasen, går udfra du har styr på det..
en enkelt lille tilføjelse: kan det udvides med en sorterings mulighed? her tænker noget i stil med det jeg tidligere har brugt her :
------------------------------------------------------------- (som link til samme side) <a href="data.asp?sort=dato">Dato</a> <a href="data.asp?sort=point">point</a>
(og så sorteringen) strSQL = "Select * from indtastning order by "& sort ----------------------------------------------------------
Hvis du kan løse denne også, er der 100 point for dette.
er det muligt at jeg kan få databasen.... Er lidt svært at se hvad den gør forkert.... Og hvordan vil du have den sorteret den, f.eks efter den der har flest point eller hvad...
hvis du skal sortere efter point eller dato skal den se sådan her ud: sql ="select dato, point, bruger, max(id) as maxid from indtastning group by bruger order by '" & request("sort") &"' ASC"
Nu gør den det ASC, men hvis det skal være DESC skriver du det istedet for Hvis Du skal sorte efter andre ting, er det vigtigt at kolonne-navnene stå efter select, ligesom jeg har gjort med point og dato...
så snart jeg putter andre kollonner ind (select dato, point, bruger osv.) så får jeg denne fejl: Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "point" som en del af en aggregatfunktion.
Når i sortere, så skal Order By ikke have ' (tics) omkring feltnavnet og det er derfor den ikke virker på Access. Den godtager ikke ' omkring sort feltet hvorimod MySQL opfatter det som et felt hvis du har ' omkring.
Mht til at du ikke kan få det til at virke når du tilføjer flere felter til selecten, så er det fordi at du kun gruppere (Group By) på bruger - Du skal huske at gruppere på alle felter for at den kan lave aggregat funktionen max(id) - Men dette vil ikke virke, da du så vil få flere felter pr. bruger
Løsningen vil være at joine tabellen på sig selv og så bruge ON HAVING på join tabellen til at være brugerens højeste ID...
Tjaaa - skal jeg lave eksemplet for de 100 point :)
sql = "SELECT t1.ID, t1.brugernr, t1.dato, t1.point FROM indtastning t1 INNER JOIN indtastning t2 ON t1.brugernr = t2.brugernr GROUP BY t1.brugernr, t1.ID, t1.Dato, t3.point HAVING (t1.ID = MAX(t2.ID)) order by t1." & request("sort")
løsning er: sql = "SELECT t1.ID, t1.brugernr, t1.dato, t1.point FROM indtastning t1 INNER JOIN indtastning t2 ON t1.brugernr = t2.brugernr GROUP BY t1.brugernr, t1.ID, t1.Dato, t1.point HAVING (t1.ID = MAX(t2.ID)) order by t1." & request("sort")
Men nu får jeg så en helt ny og spændende fejl : Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "t1.".
sql ser nu sådan ud : sql = "SELECT t1.ID, t1.brugernr, t1.dato, t1.point FROM indtastninger t1 INNER JOIN indtastninger t2 ON t1.brugernr = t2.brugernr GROUP BY t1.brugernr, t1.ID, t1.Dato, t1.point HAVING (t1.ID = MAX(t2.ID)) order by t1." & request("sort")
stussy der må max uddeles 200 point for et spørgsmål. Det står i reglerne se § 2.1.15: Det er ikke tilladt at udlove mere end 200 point for et spørgsmål ved at dele det over flere spørgsmål.
Så du må max give ttopholm 100 point når barkov har fået de 100 af dem. Du kan selv svare her og dele dem med ttopholm, sådan du tager de 100 tilbage.
øv øv så mistede jeg lige en røvfuld point for en løsning jeg brugte en smule tid på.... Jeg lavet både den avancerede løsning og fjernede alle fejl i koden og optimerede den...
Hmmm, men sådan er livet vel.
Hygge og håber at du blev glad for løsningen alligevel. Vi kan jo ikke gøre for at de er så strikse mht. til at det faktisk blev til flere opgaver på en opgave *hehe* og at du så ikke kunne ændre point satsen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.