Hej, Jag använder den här för att skriva ut en hockeytabell Förklara gärna lite mer i detalj... Jag vill få ut: För att få ut detta måste du loopa igenom hela tabellen med data ett varv för varje lag vilket är självmord. Jo, Jo, visst kan dom det.Fotbolls tabell ?
Jag har två tabbeler som jag vill hämta data ifrån och skriva ut en tabell?
tblGames
gameId - serieId - homeTeam - homeScore - ayawTeam - awayScore - gameResult - gameDate
ex. 1 | 2 | 2 | 1 | 2| 2 | 1 | 1-1 | 2005-05-10
tblTeam
teamId - serieId - teamName - teamContent
ex. 1 | 2 | Åsne IF | ASN en fotboll....
Tabellen jag vill ha ska se ut på ungefär:
Lagnamn - Matcher - Mål - Poäng
Ja måste ju loppa ut alla lag namn,
räkna ihopp alla matcher,
räkna ihopp alla mål och
räkna ut poängen...
Någon som har några förslag till en början på en sql sats ?Sv: Fotbolls tabell ?
<code>
Select
t.DivisionID, t.Name,t.TeamID,
Count(g.GameID) as gamesPlayed,
sum(case when (t.teamID = g.homeTeam and g.HomeScore > g.awayScore) or (t.Teamid = g.awayTeam and g.homeScore < g.awayScore) then 1 else 0 end) as wins,
sum(case when (t.teamID = g.homeTeam and g.HomeScore > g.awayScore) then 1 else 0 end) as homeWins,
sum(case when (t.teamID = g.awayTeam and g.HomeScore < g.awayScore) then 1 else 0 end) as awayWins,
sum(case when (t.teamID = g.homeTeam and g.HomeScore < g.awayScore) or (t.Teamid = g.awayTeam and g.homeScore > g.awayScore) then 1 else 0 end) as losses,
sum(case when (t.teamID = g.homeTeam and g.HomeScore < g.awayScore) then 1 else 0 end) as homeLosses,
sum(case when (t.teamID = g.awayTeam and g.HomeScore > g.awayScore) then 1 else 0 end) as awayLosses,
sum(case when (t.teamID = g.homeTeam and g.HomeScore = g.awayScore) or (t.Teamid = g.awayTeam and g.homeScore = g.awayScore) then 1 else 0 end) as ties,
sum(case when (t.teamID = g.homeTeam and g.HomeScore = g.awayScore) then 1 else 0 end) as homeTies,
sum(case when (t.teamID = g.awayTeam and g.HomeScore = g.awayScore) then 1 else 0 end) as awayTies,
(sum(case when (t.teamID = g.homeTeam and g.HomeScore > g.awayScore) or (t.Teamid = g.awayTeam and g.homeScore < g.awayScore) then 1 else 0 end)*2) + sum(case when (t.teamID = g.homeTeam and g.HomeScore = g.awayScore) or (t.Teamid = g.awayTeam and g.homeScore = g.awayScore) then 1 else 0 end) as points,
sum((case when t.teamID = g.homeTeam then 1 else 0 end)*homeScore + (case when t.teamID = g.awayTeam then 1 else 0 end) * awayScore) as GoalsForward,
sum((case when t.teamID = g.homeTeam then 1 else 0 end)*awayScore + (case when t.teamID = g.awayTeam then 1 else 0 end) * homeScore) as GoalsAgainst,
sum((case when t.teamID = g.homeTeam then 1 else 0 end)*homeScore + (case when t.teamID = g.awayTeam then 1 else 0 end) * awayScore) - sum((case when t.teamID = g.homeTeam then 1 else 0 end)*awayScore + (case when t.teamID = g.awayTeam then 1 else 0 end) * homeScore) as goalDifference
from
live_divisions_Teams as t
left join live_games as g
on t.teamID = g.homeTeam or t.teamID = g.awayTeam
where
t.divisionID = @divisionID and g.gameEnded = 1
group by
t.teamID,t.Name,t.divisionID
order by
points desc, goaldifference Desc, goalsforward desc
</code>
Du kanske kan använda denSv: Fotbolls tabell ?
Tabellen du vill få ut, vad ska den innehålla?
Lagnamn är ju lätt att förstå, men ska matcher vara en summa av alla spelade matcher?
Mål, ska det vara en summa av målen?
Poäng, ska det vara summan av alla poäng?
Alltså, ska det vara en rad per lag eller kan lagen ha lika många rader som matcher de spelat?
Mvh,
ThomasSv:Fotbolls tabell ?
Lagnamn,
alla matcher där detta lag har mer mål än motsåndarna så ska dom få 3 poäng i ex teamPoang
alla matcher där detta lag har mindre mål än motsåndarna så ska laget få 0 poäng i ex teamPoang
och om båda lagen har lika många mål ska dom få 1 poäng var i ex teamPoang
som en vanlig tabell...
ex.
Lag AntalMatcher Poäng
Åsne IF 2 6
IBF 2 2
SBI 2 2
AIK 2 0Sv: Fotbolls tabell ?
Mitt förslag skulle vara att istället ha en tabell med alla matchresultat i och en tabell med själva tabellen.
Alla lag har en rad i tabellen med tabbellen i, ex på data från start:
ID | LagID | Vunna | Lika | Forlorade | PlusMal | MinusMal | Poang
---------------------------------------------------------------------------
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
2 | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
3 | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
4 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
5 | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
När du sedan lägger till ett resultat i tabellen med matchresultat så räknar du även ut vilket lag som vunnit/spelat lika/förlorat och ger dem poäng efter det och förändrar deras Gjorda/Insläppta mål.
För varje resultat du matar in får alltså hämta data för respektive lag, lägga till data och sedan spara ner den igen.
När du vill visa tabellen är denna då redan klar.
På detta sätt slipper du beräkning av tabellen varje gång du vill visa den.
Hoppas min knappa beskrivning gjorde dig lite klokare.
/AndersSv:Fotbolls tabell ?
jag har tänkt på detta men då kan inte ett lag spela i två olika serier ?Sv: Fotbolls tabell ?
Du måste lägga till en ytterliggare variabel bara, typ "SerieID", så funkar det fint.
/Anders