webForumDet fria alternativet

Poängliga söker efter en bra sql sträng

Databaser & SQL

5 svar · 415 visningar · startad av Nickemannen

Medlem sedan aug. 20003 575 inlägg
Frågan#1

Hej jag sitter här och försöker knåpa ihop en sida för mitt hockeylag.

Håller just nu på med en poängliga alltså där
spelarens namn, nummer, antal macther, mål, assists skall visas och sumeras.

Med hjälp av antalet matcher så skall en procent räknas ut (behövs kanske räknas ut i sql strängen).

Listan skall vara sorterad efter antalet poäng som räknas ihop utav antalet mål och assists. Och är det lika mellan två stycken skall den som har flest mål prioriteras i listan.

Tabell strukturen just nu ser ut följande:

Players:
P_Id
P_Name
P_playnumber

Games
Game_id
Game_date
Game_team_id // Vilket motståndarlag
Game_home // hemma eller borta true/false

Points
Point_Game_id
Point_P_id
Point_assists
Point_goals
Point_penalty

För varje match så skapas det alltså en ny sådan här post för dem spelare som deltagit i matchen om dom.

Problemet är att jag inte kan hitta någon bra och snabb sql sats för att använda.

Jag kan tänka mig att ändra på strukturen av databasen.

Jag vill helst kunna plocka fram hur många mål en viss spelar har gjort under en viss match så dynamiken vill jag ha kvar.

Några förslag?

Medlem sedan dec. 20003 887 inlägg
#2

Det här kan nog vara en början

SELECT P_Name,
  P_playnumber,
  Point_goals,
  Point_assists,
  SUM(Point_assists) AS TotalAssists,
  SUM(Point_goals) AS TotalGoals,
  SUM(Point_assists) + SUM(Point_goals) AS TotalPoints
FROM Players
INNER JOIN Points ON Points.Point_P_id = Players.P_Id
GROUP BY P_Name, P_playnumber, Point_goals, Point_assists
ORDER BY SUM(Point_assists) + SUM(Point_goals) DESC, SUM(Point_goals) DESC

För att kolla en specifik spelare i en match är det bara att lägga till

WHERE Point_game_id = [i]matchid[/i] AND P_Id = [i]spelarid[/i]

Antalet matcher blir annorlunda att räkna ut. Hur sparar du informationen om vilka matcher en viss spelare har deltagit i?

Medlem sedan aug. 20003 575 inlägg
#3

Det tänkte jag att man skulle få ut av sql satsen,

Antalet matcher för en spelare är ju antalet poster i points som har p_id som är unikt för en spelare.

Det går ju att göra detta i en separat sql sträng men det känns onödigt om man kan få in det i ett och samma anrop.

Medlem sedan juni 200032 967 inlägg
#4

Antalet matcher för en spelare är ju antalet poster i points som har p_id som är unikt för en spelare.

Det finns alltså poster där även om man inte gjort poäng i den specifika matchen?

Medlem sedan aug. 20003 575 inlägg
#5

@nders skrev:

Antalet matcher för en spelare är ju antalet poster i points som har p_id som är unikt för en spelare.

Det finns alltså poster där även om man inte gjort poäng i den specifika matchen?

Ja det stämmer bra det.

jag vet att det kanske blir lite onödig mycket data.
Men det blir också mindre programmering när det gäller att lägga till spelare till en match samt att ta bort.

Medlem sedan aug. 20003 575 inlägg
#6

Ingen som har en lösning på hur jag räknar ut antalet matcher i samma sql sträng?

256 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)