Du kan göra den uträkningen i SQL satsen istället
[red]
SELECT ... ...ORDER BY Poang DESC, (malg - mali) DESC, malg DESC"
[/red]
På detta vis sorterar den först på poäng sen målskillnad sen antal gjorda mål......
mvh icaaq
10 svar · 377 visningar · startad av Alkvettern
Hej
Ska sortera uppgifterna i en fotbollstabell.
Förs så ska man sortera efter poäng, och om poängen är lika
ska man sortera efter målskillnad. (gjorta mål minus insläppta)
Att sortera efter poäng är inga problem.
Problemet kommer sen. Målskillnad har ingen egen post i databasen. Jag kör en uträkning på gjordamål minus insläppta mål och visar sedan resultatet.
Hur gör jag för att sortera efter något som inte finns i databasen
Min uträkning ser ut så här:
<%
differens=Cint(oRs("malg"))-cInt(oRs("mali"))
Response.write differens
%>
Du kan göra den uträkningen i SQL satsen istället
[red]
SELECT ... ...ORDER BY Poang DESC, (malg - mali) DESC, malg DESC"
[/red]
På detta vis sorterar den först på poäng sen målskillnad sen antal gjorda mål......
mvh icaaq
Du kan även göra din uträkning av målskillnaden i select satsen
[red]
SELECT ... ..., malg - mali as skillnad ORDER BY ... ... ...
[/red]
SEn skriver du ut den med
[red]
Response.Write oRs("skillnad")
[/red]
mvh icaaq
Är man riktigt cool så lägger man även in det i en view. ;)
Det Erik Juhlin menar är att man skapar en view(vy) som ser ut som en tabell som har ett fält med malg - mali som resultat .
vyn kommer då innehålla.
Poäng,målskillnad, och namn på laget då !
Tack!
Undrar hur man kan göra en motsvarande sortering om de fält man önskar sortera efter är av texttyp.
Följande genererar ett felmeddelande pga felaktiga typer.
Kan man i SELECT-satsen konvertera summa1 och summa2 till tal, och därmed kunna använda differensen som sortering?
SELECT DISTINCT SUM(OSBSTD.UCIVQT) AS Expr1, OCUSMA.OKCUNM, SUM(OSBSTD.UCSAAM) AS summa1, SUM(OSBSTD.UCUCOS) AS summa2
FROM OSBSTD INNER JOIN
OCUSMA ON OSBSTD.UCCUNO = OCUSMA.OKCUNO
GROUP BY OSBSTD.UCITNO, OCUSMA.OKCUNM
HAVING (OSBSTD.UCITNO = '53020 ')
ORDER BY (summa1 - summa2) DESC
MvH
David
SELECT DISTINCT SUM(OSBSTD.UCIVQT) AS Expr1, OCUSMA.OKCUNM, SUM(OSBSTD.UCSAAM) AS summa1, SUM(OSBSTD.UCUCOS) AS summa2
FROM OSBSTD INNER JOIN
OCUSMA ON OSBSTD.UCCUNO = OCUSMA.OKCUNO
GROUP BY OSBSTD.UCITNO, OCUSMA.OKCUNM
HAVING (OSBSTD.UCITNO = '53020 ')
ORDER BY (3 - 4) DESC
/RED för mycket capslock.... :r
Då får du konvertera dom innan summeringen
SELECT SUM(cast(OSBSTD.UCIVQT as integer)) AS Expr1, OCUSMA.OKCUNM, SUM(OSBSTD.UCSAAM) AS summa1, SUM(OSBSTD.UCUCOS) AS summa2
FROM OSBSTD INNER JOIN
OCUSMA ON OSBSTD.UCCUNO = OCUSMA.OKCUNO
where (OSBSTD.UCITNO = '53020 ')
GROUP BY OSBSTD.UCITNO, OCUSMA.OKCUNM
ORDER BY (summa1 - summa2) DESC
t.ex.
Att ha med distinct i denna fråga är onödigt. Jag bytte ut having också då det är effektivare att använda where.
Eller så kan LarsG bäst :P