Jag har problem med att sortera ut och summera värden ur en Accessdatabas. Jag samanställer resultat samt poäng från ett antal olika hockeymatcher i en Accesstabell. Nu vill jag sortera ut summan av poängkolumnerna för respektive lag och presentera det som en vanlig serietabell. På http://peterholm.nu/slask/tabell.gif finns en dump på hur jag menar. Eftersom jag inte orkade göra en testdatabas skrev jag lite direkt från huvudet :) Om det inte fungerar får du hojta till så ska jag testa lite nogrannare... Hoppas att detta ska fungera. Kunde inte hålla mig så jag smet in och testade ditt förslag ;-) Lägg till As Points i SQL-satsen så funkar det: Nu fick jag felmeddelandet: "Cirkelreferens orsakad av aliaset 'Points' i frågans SELECT-instruktion." Antar att det beror på att objektetet heter 'Points' på flera ställen. När jag döper om första objektet till 'Pointstot' och skriver ut Response.Write objRS("Pointstot") i stället så funkar det perfekt. Stort tack för hjälpen! Lägg till Stort tack, funkade på första kicken! Mitt tillägg kvarstår dock om det är någon som har bra tips på sajter eller literatur som beskriver detta med SQL-strängar och alla dess varianter på ett enkelt och bra sätt.Summera med SQL-satsen [LÖST]
<%
strSQL="SELECT SUM(PointsHome + PointsAway) AS Poang FROM Games ORDER BY Poang"
%>
summerar totalpoängen för alla lag, men jag vill sortera ut poängen för varje lag och presentera det som en vanlig serietabell.
Jag kan ju använda:
<%
SQL1="SELECT SUM(PointsHome + PointsAway) AS Poang FROM Games WHERE TeamHome='Lag1' OR TeamAway='Lag1'"
%>
för att sortera ut poängen för lag1 o.s.v. men det blir ju en d-vla massa SQL-satser för 12 lag… Dessutom vill jag göra samma sak för målskillnad m.m.
Någon som har några tips på om det finns någon enklare metod?Sv: Summera med SQL-satsen
SELECT Team, Sum(Points) FROM (SELECT TeamHome AS Team, PointsHome AS Ponits FROM tabell UNION SELECT TeamAway AS Team, PointsAway AS Ponits FROM tabell) GROUP BY Team
/JohanSv: Summera med SQL-satsen
På några ställen står det "ponits". Jag antar att det är "points" som menas.
hur som helst, SQL-satsen accepteras men när jag fösöker loopa ut lag och poäng får jag "Objektet kunde inte hittas i mängden med det begärda namnet eller numret."
Om jag bara loopar ut lagen med Response.Write objRS("Team") så grupperas lagen ut helt OK men lägger jag till Response.Write objRS("Points") så får jag felmeddelandet ovan. Är jag ute och seglar, eller?
Så här ser satsen ut nu:
strSQL="SELECT Team, Sum(Points) FROM (SELECT TeamHome AS Team, PointsHome AS Points FROM Games UNION SELECT TeamAway AS Team, PointsAway AS Points FROM Games) GROUP BY Team"
Tillägg: Var kan man läsa mer GROUP BY, UNION SELECT m.m.? Det verkar mycket användbart att kunna mer om alla dessa varianter...Sv: Summera med SQL-satsen
strSQL="SELECT Team, Sum(Points) As Points FROM (SELECT TeamHome AS Team, PointsHome AS Points FROM Games UNION SELECT TeamAway AS Team, PointsAway AS Points FROM Games) GROUP BY Team"Sv: Summera med SQL-satsen
Hela satsen blev alltså:
strSQL="SELECT Team, Sum(Points) As Pointstot FROM (SELECT TeamHome AS Team, PointsHome AS Points FROM Games UNION SELECT TeamAway AS Team, PointsAway AS Points FROM Games) GROUP BY Team"
Nu ska jag bara dissekera hela satsen och fatta hur den funkar. Vad GROUP BY betyder kan jag väl ana men vad betyder UNION SELECT?
Och, hur kan jag sortera efter 'Pointstot'? Att lägga till ORDER BY Pointstot sist i satsen gav "För få parametrar angavs. 1 förväntades." Ska klura lite mer på det senare men om någon har en idé är den välkommen.
Tack än en gång!Sv: Summera med SQL-satsen
order by 2 desc
för sorteringen. ( 2 betyder andra kolumnen i select-listan.)
union innebär att man slår ihop resultatet av två select-frågor och tar bort alla duplikat. Du bör egentligen använda UNION ALL eftersom den inte tar bort duplikat. Med din nuvarande fråga så blir det fel om ett lag har lika många poäng borta som hemma.Sv: Summera med SQL-satsen [LÖST]