Avatar billede kunop Nybegynder
28. december 2001 - 17:56 Der er 21 kommentarer og
1 løsning

SQL forespørgsel

Jeg har tidligere lagt et lignende spørgsmål ud, men det blev vist nok lidt misforstået. Derfor vil jeg prøve at være endnu mere konkret. Jeg har lavet et simpelt pointsystem, hvor der er en database med en tabel kaldet news. I den tabel er der bla. en point rubrik og en navn rubrik. Det jeg vil have hjælp til er, hvordan jeg udtrækker det navn ud som har samlet flest point? Eksempelvis hvis Kenneth har fået 5+15+10 point og Lenny har fået 5+15+10 point. Så skal den vise navnet på Kenneth. Dvs den skal summere antallet. - Select navn from news where max(point)..????? Jeg kan ikke få det til at virke. Er der nogen der har ideer så skriv venligst... Det er forresten en Access database
Avatar billede steen_hansen Forsker
28. december 2001 - 18:00 #1
Noget i denne retning:
Avatar billede steen_hansen Forsker
28. december 2001 - 18:00 #2
SELECT DISTINCTROW Max([news].[point]) AS [Maks Of point], Count(*) AS [Antal Of news]
FROM news;
Avatar billede steen_hansen Forsker
28. december 2001 - 18:03 #3
Sorry, det er mere denne her?

SELECT DISTINCTROW [news].[navn], Max([news].[point]) AS [Maks Of point]
FROM news
GROUP BY [news].[navn];
Avatar billede erikjacobsen Ekspert
28. december 2001 - 18:10 #4
Er der ikke bare

select top 1 navn,SUM(point) as s from news group by navn order by s desc

Så får du kun kenneth
Avatar billede kunop Nybegynder
28. december 2001 - 18:14 #5
Tak for besvarelserne. Jeg prøver det lige af og vender tilbage
Avatar billede kunop Nybegynder
28. december 2001 - 18:19 #6
Når jeg prøver besvarelsen fra erikjacobsen får jeg følgende fejlmeddelelse. Kan i hjælpe mig med hvad det betyder:

Microsoft OLE DB Provider for ODBC Drivers error \'80040e10\'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/mo10.asp, line 12
Avatar billede erikjacobsen Ekspert
28. december 2001 - 18:21 #7
Hmm, husker jeg forkert med syntaksen omkring top 1. Prøv lige uden

select navn,SUM(point) as s from news group by navn order by s desc
Avatar billede kunop Nybegynder
28. december 2001 - 18:22 #8
Forresten tror nok top1 skal være i et ord. Prøver lige igen
Avatar billede kunop Nybegynder
28. december 2001 - 18:31 #9
Top 1 skal være i to ord. Jeg får stadig ovenstående fejlmeddelelse. Jeg ved ikke om der er noget galt med mit udtræk af databasen så i får lige koden:

<%
 
  Set DATABASE = Server.CreateObject(\"ADODB.Connection\")
  DATABASE.Open \"Driver={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.Mappath(\"log/pointsystem.mdb\") \'Access databasen!


  SQLStr = \"select navn,SUM(point) as s from news group by navn order by s desc\"
  Set RSDatabase = DATABASE.Execute(SQLStr)
  If RSDatabase.EOF Then
    %> Ingen point i databasen<%
  End If
  If Not RSDatabase.EOF Then
    s = RSDatabase(\"s\")
   
 
  End If


  RSDatabase.Close
  Set RSDatabase = Nothing
%>
Avatar billede kunop Nybegynder
28. december 2001 - 18:33 #10
Besvarelsen fra steen_hansen lader ikke til at virke helt efter hensigten. Når jeg sætter koden ind udskriver den kun pointallet 10, selv om det end ikke er det højeste. Man kan få 5 - 10 - 15. Den summerer ikke.
Avatar billede kunop Nybegynder
28. december 2001 - 18:34 #11
Tror måske jeg har lavet en lille fejl med Steen_Hansens besvarelse prøver lige igen
Avatar billede erikjacobsen Ekspert
28. december 2001 - 18:38 #12
Min virker altså i MySql - men ok du bruger Access - så jeg giver bare op
Avatar billede erikjacobsen Ekspert
28. december 2001 - 18:40 #13
PS: Point er vel et talfelt - ik\' ?
Avatar billede kunop Nybegynder
28. december 2001 - 18:41 #14
Jo det er det
Avatar billede kunop Nybegynder
28. december 2001 - 18:42 #15
Men tak for det i hvertfald
Avatar billede kunop Nybegynder
28. december 2001 - 18:45 #16
Kender ikke til MySql. Men kunne jeg bruge det til mit pointsystem? Er der meget forskel på det og access? Er det svært at lære?
Avatar billede erikjacobsen Ekspert
28. december 2001 - 18:51 #17
Jeg synes det er 199 gange nemmere :)
Avatar billede kunop Nybegynder
28. december 2001 - 19:06 #18
Kender du et sted, hvor jeg kan lære om det???
Avatar billede erikjacobsen Ekspert
28. december 2001 - 19:07 #19
Avatar billede proaccess Nybegynder
30. december 2001 - 10:10 #20
I Access kan du bruge:

SELECT TOP 1 Navn, Sum(Point) AS Total FROM News GROUP BY Navn ORDER BY Sum(Point) DESC;

Avatar billede kunop Nybegynder
30. december 2001 - 18:58 #21
Jeg kan jo kun sige at svaret fra proaccess virker helt efter hensigten. Tusind tak for det
Avatar billede steen_hansen Forsker
01. januar 2002 - 21:20 #22
Ok, var lidt sent på den. Fandt ellers frem til det her:

SELECT TOP 1 [navn].[Id], [navn].[Navn], [1]+[2]+[3] AS summen
FROM navn
ORDER BY [1]+[2]+[3] DESC;

Men godt nytår til alle!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester