webForumDet fria alternativet

SQL-fråga för att ta reda på vem som har flest rätt

Databaser & SQL

5 svar · 412 visningar · startad av Method

Medlem sedan apr. 2001357 inlägg
Frågan#1

Hej, håller på att fixa med en sida där man kan tippa på matcher och har följande fält i 3 olika tabeller:

TblGames
|GameNumber| (relationsfält TblTips)
|HomeTeam|
|HomeScore|
|AwayTeam|
|AwayScore|
|GameResult| - där sätts 1,X,2 in

TblTips
|AnstallningsNummer| - (relationsfält TblPersoner)
|GameNumber| (relationsfält TblGames)
|Rad| - Anger rad (en spelare kan ha 3 rader)
|Tips|- där sätts 1,X,2 in

TblPersoner
|AnstallningsNummer| (relationsfält TblTips)
|Name|
|Office|

Nu till själva problemet, jag ska med hjälp av en SQL fråga presentera en topplista där deltagerens namn presenteras och sen ska det grupperas efter rad(erna). Namnen ska bara presenteras en gång per rad de spelat i topplistan.

Skulle någon kunna förklara hur jag ska gå tillväga, är inte så vass på avancerade sql frågor

Har denna SQL som grund:

strSQL = "SELECT tblGames.GameNumber, tblGames.GameResult, tblTips.AnstallningsNummer, tblTips.GameNumber, tblTips.Rad, tblTips.Tips, tblPersoner.AnstallningsNummer, tblPersoner.Name, tblPersoner.Office FROM ((tblGames INNER JOIN tblTips ON tblGames.GameNumber = tblTips.GameNumber) INNER JOIN tblPersoner ON tblTips.AnstallningsNummer = tblPersoner.AnstallningsNummer) WHERE tblGames.GameResult = tblTips.Tips"
Medlem sedan dec. 200012 464 inlägg
#2
SELECT tblTips.Rad, 
       tblPersoner.AnstallningsNummer, 
       tblPersoner.Name, 
       tblPersoner.Office,
       count(*) as correct
  FROM tblGames 
  JOIN tblTips 
    ON tblGames.GameNumber = tblTips.GameNumber
   and tblGames.GameResult = tblTips.Tips
 JOIN tblPersoner ON tblTips.AnstallningsNummer = tblPersoner.AnstallningsNummer
 group by tblTips.Rad, 
       tblPersoner.AnstallningsNummer, 
       tblPersoner.Name, 
       tblPersoner.Office
 order by tblPersoner.name,
             correct desc

att bara visa namnet en gång oavsett antal rader hanteras enklare i presentationen

Medlem sedan apr. 2001357 inlägg
#3

Glöm denna, jag hade gjort fel

Medlem sedan apr. 2001357 inlägg
#4

Så nu har det löst sig

jag använder denna kod

SELECT             tblTips.tps_Rad, 
                       tblPersoner.prs_AnstallningsNummer, 
                       tblPersoner.prs_Name, tblPersoner.prs_Office, 
                       count(*) as correct 
FROM               ((tblGames 
INNER JOIN        tblTips 
ON                   tblGames.gme_GameNumber = tblTips.tps_GameNumber 
and                  tblGames.gme_GameResult = tblTips.tps_Tips) 
INNER JOIN        tblPersoner ON tblTips.tps_AnstallningsNummer = tblPersoner.prs_AnstallningsNummer) 
GROUP BY          tblTips.tps_Rad, 
                       tblPersoner.prs_AnstallningsNummer, 
                       tblPersoner.prs_Name, 
                       tblPersoner.prs_Office 
ORDER BY          tblPersoner.prs_Name DESC"

Det är ett enda problem kvar och det är att så fort jag ska göra en ORDER BY när correct står med så får jag detta felmess: No value given for one or more required parameters

Men så fort jag tar bort correct och bara har tblPersoner.prs_Name kvar funkar det, hur kommer detta sig? Har Access databas

Mvh

Jonas

Medlem sedan dec. 200012 464 inlägg
#5

Aha, du använder Access.

Du måste använda

order by 4

där 4 motsvarar positionen i selectlistan.

Medlem sedan apr. 2001357 inlägg
#6

Kanon, tack så hemskt mycket för hjälpen=)

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